JVM GC时的内存管理和频繁GC的原因

1.如果对象比较小,生命周期比较短,就需要频繁的GC,将这些对象从内存释放掉。

2.如果说对象比较大,生命周期比较长,就不需要频繁的GC,因为它们主要存在于Old Generation。

        垃圾回收的时候,会扫描Eden区域以及From区域。如果GC过后对象还存活就会把对象复制到To区域。如果To的空间满了,就可能放到Old Generation,所以说,对象最少的GC次数进入Old Generation是0次。

年轻代的垃圾回收采用的是复制的方式。

       频繁的GC可能是人为的,比如代码调用GC。另外有可能是框架调用GC方法。Heap比较小的时候,肯定会发生频繁的GC。还有构建对象和释放对象特别频繁。

       在进行GC的时候,Heap一般而言剩余50-70%的空间,比较健康的空间。

       缓存的重要性,能给Heap分配尽可能大的空间,缓存要统计命中率,越高越好,否则既占用内存,又占用IO和GC。

猜你喜欢

转载自garssion.iteye.com/blog/2399446
今日推荐