JVM发生OOM的区域
一、JVM发生OOM的区域public class HelloWorld { public static void main(String[] args) { sayHello(); } private static void sayHello() {
频繁发生Full GC的几种常见原因
1、 系统并发量比较大,频繁发生Young GC,但是每次发生Young GC之后存活对象比较多,而Survivor内存配置不合理,放不下Young GC的存活对象,导致Young GC之后存活对象直接存放在老年代,从而导致老年代内存不足触发Full GC。解决方式:通过jstat观察GC情况,合理
Young GC日志解析
一、一段程序代码public class MinorGCTest { public static void main(String[] args) { // 1MB byte[] array1 = new byte[1024 * 1024]; arra
为什么老年代的垃圾回收会把新生代的垃圾回收慢得多?
一、为什么新生代的垃圾回收快?因为新生代的存活对象比较少,通常占10%左右,从GC Roots出发追踪的存活对象比较少,速度比较快,清理时,只需要把存活的对象移动到Survivor区,原来的Eden区和另外一个Survivor区的所有垃圾对象全部快速删除即可。二、为什么老年代的垃圾回收慢?因为老年代
JVM垃圾回收后存活对象何去何从?
一、堆空间内存结构堆的内存空间分为新生代和老年代,默认占比是新生代占1/3,老年代占2/3,可以通过-XX:NewRatio来调整比例。而新生代又划分了3个区域,分别是Eden区、from survivor区和to survivor区,默认占比是Eden区占8/10,from survivor区占1
强引用、软引用、弱引用、虚引用
Java对象引用支持4种级别,从高到低分别是:强引用、软引用、弱引用和虚引用,用于控制灵活的控制对象的生命周期。一、强引用强引用就是我们平时创建的对象实例,JVM执行垃圾回收时,只要对象实例的引用还在,在内存不足时宁愿抛出OOM也不会对它进行回收。private static void testSt