
JVM 深度探索系列
文章平均质量分 69
从JVM的角度深入观察代码的执行,
从基本概念的学习到线上问题的实践
猫哥灬01
话不在多,在于精
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
深入理解Java虚拟机
深入理解Java虚拟机原创 2022-10-14 11:25:49 · 544 阅读 · 0 评论 -
G1(垃圾first)回收器
G1垃圾回收器原创 2022-07-02 13:36:41 · 197 阅读 · 0 评论 -
JVM深度学习系列之类加载问题分析(一)
类加载过程加载(加载IO流文件,并存储类信息在方法区)-> 验证(格式验证,语义分析,操作验证)-> 准备(为类中的所有静态变量分配内存空间,并为其设置一个初始值)-> 解析(将常量池中的符号引用转为直接引用)-> 初始化(将一个类中所有被static关键字标识的代码统一执行一遍,如果执行的是静态变量,那么就会使用用户指定的值覆盖之前在准备阶段设置的初始值;如果...原创 2018-12-28 16:00:02 · 315 阅读 · 0 评论 -
JVM深度学习系列之字节码文件学习(二)
1. 首先javac编译java文件 javac aa.java2. 使用javap 反编译class文件得到字节码文件 javap -v aa.class Javap 相关idea插件 jclasslib反编译解析文档:https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5....原创 2018-12-28 16:51:14 · 124 阅读 · 0 评论 -
JVM深度学习系列之内存使用细节(三)
new 对象 检查类是否加载 在堆中分配空间 虚拟机调用init方法 对象的访问方式 句柄 (在堆中) 好处: 稳定,栈中保留句柄的指针,句柄指向实例数据,实例数据位置改变时(垃圾回收期间),栈中的指针不用变,只需要改变句柄的指针。 直接访问 快,减少一次句柄到指针寻址的时间开销。 ...原创 2018-12-29 16:17:31 · 209 阅读 · 0 评论 -
JVM深度学习系列之内存异常(四)
目标: 根据异常信息判断哪个区域出现异常, 哪种代码可能会导致这种异常, 如何解决异常 一般情况下我们关心是堆溢出,栈溢出,方法区溢出 堆溢出 Java heap oom 内存泄漏 大对象过多 解决: 首先使用jmap dump内存快照,然后使用jvirsual 查看内存中最多的实例类对象即可。 参考:https://blog.youkuaiyun.com/chwshuang/article...原创 2018-12-29 18:57:09 · 329 阅读 · 0 评论 -
JVM深度学习系列之内存实践(五)
目标: 1 通过jvm参数的调整,优化GC 2. 通过内存分析工具定位导致内存泄漏或溢出的代码 通过jvm参数的调整,优化GC 表面现象: 1. 方法调用超时 2.方法TP99 过大 如何减少full gc 首先考虑内存泄漏 dump线上内存 查看大对象/数量较多的对象 进行代码排查 调大年轻代 让对象尽量在年轻代进行回收 少进入老年代 同...原创 2019-01-09 10:40:19 · 459 阅读 · 0 评论 -
JVM深度学习系列之虚拟机参数汇总(六)
以下信息摘自:https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html不管是YGC还是Full GC,GC过程中都会对导致程序运行中中断,正确的选择不同的GC策略,调整JVM、GC的参数,可以极大的减少由于GC工作,而导致的程序运行中断方面的问题,进而适当的提高Java程序的工作效率。但是调整GC是以个极为复杂的过程,由...转载 2019-01-04 14:18:54 · 219 阅读 · 0 评论 -
JVM深度学习系列之实践经验(七)
如何充分利用高性能服务器(比如:内存16G) 一般的思路是调大堆内存(12G) 但是同时会引起几个问题 年轻代GC和老年代GC的时间就会很长,严重的10多s,这样会导致系统不定时的卡顿(GC的stop the world),用户不能操作。 当发生堆溢出时,无法dump堆 一般快照文件达到十几G,即使dump下来,也很难分析 解决: 建立逻辑集群 在一台机器上,开启多......原创 2019-01-10 11:35:15 · 303 阅读 · 0 评论