随笔分类 - JVM
摘要:对于线上系统突然产生的运行缓慢问题,如果该问题导致线上系统不可用,那么首先需要做的就是,导出jstack和内存信息,然后重启系统,尽快保证系统的可用性。这种情况可能的原因主要有两种: 代码中某个位置读取数据量较大,导致系统内存耗尽,从而导致Full GC次数过多,系统缓慢; 代码中有比较耗CPU的操
阅读全文
摘要:我们可以尝试对JVM进行调优,主要就是堆内存那块 所有线程共享数据区大小=新生代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m。所以java堆中增大年轻代后,将会减小年老代大小(因为老年代的清理是使用fullgc,所以老年代过小的话反而是会增多fullgc的)。此值对系统性能影响较
阅读全文
摘要:加载 类加载过程的第一步,主要完成下面3件事情: 通过全类名获取定义此类的二进制字节流 将字节流所代表的静态存储结构转换为方法区的运行时数据结构 在内存中生成一个代表该类的 Class 对象,作为方法区这些数据的访问入口 加载阶段和连接阶段的部分内容是交叉进行的,加载阶段尚未结束,连接阶段可能就已经
阅读全文
摘要:针对 HotSpot VM 的实现,它里面的 GC 其实准确分类只有两大种: 部分收集 (Partial GC): 新生代收集(Minor GC / Young GC):只对新生代进行垃圾收集; 老年代收集(Major GC / Old GC):只对老年代进行垃圾收集。需要注意的是 Major GC
阅读全文
摘要:JVM class->机器码 这一步。在这一步 JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT 编译器,而 JIT 属于运行时编译。当 JIT 编译器完成第一次编
阅读全文

浙公网安备 33010602011771号