JVM GC的内存结构:Young Generation(Eden,from,to)、Old Generation、Permanent Generation

Yong Generation: Object和基本活跃的区域

Eden:小Object出生的地方(大的Object可能直接进Old Generation)

From(S1):

To(S2):Eden中的对象被GC,先放在To中。To快满时,From和To交换。

(From 和 To大小一样,是Eden和Old Generation的缓冲地带)


Old Generation:经过几次GC后依然存在,Old Generation满,发生Full GC。

Yong/Old Generation是属于Heap Area。


Permanent Generation: Method Area,里面有Class,Static等。


频繁发生GC的原因:

1.人为调用

System.gc() and Runtime.gc()方法


2.框架内部调用GC方法


Heap内存太小,频繁GC

构建对象和释放对象频繁,则频繁GC



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JVM(Java虚拟机)的老年代是指JVM中的内存区域,用于存储生命周期较长的对象。在JVM中,内存被划分为多个不同的区域,其中包括年轻代和老年代。老年代主要用于存放经过多次垃圾回收后幸存下来的对象。 老年代的对象有以下特点: 1. 生命周期较长:老年代存放的对象通常是经过多次垃圾回收后仍然存活的对象,它们的生命周期相对较长。 2. 大对象:老年代通常会存放较大的对象,例如大型集合、数组等。这些对象占用的内存空间较多。 3. 垃圾回收较少:由于老年代存放的对象生命周期较长,因此老年代的垃圾回收相对较少。但是当老年代空间不足时,JVM会触发一次较为耗时的Full GC来进行垃圾回收。 为了优化老年代的性能和空间利用率,JVM引入了一些技术: 1. 分代回收:JVM采用分代回收策略,将内存划分为年轻代和老年代,以便更好地适应不同对象的生命周期。 2. 大对象处理:JVM针对较大的对象引入了特殊的处理方式,例如将大对象直接分配到老年代。 3. 垃圾回收算法:JVM使用不同的垃圾回收算法来对老年代进行垃圾回收,例如标记-清除算法、标记-整理算法等。 总之,老年代是JVM中用于存放生命周期较长的对象的内存区域。通过采用分代回收策略和针对大对象的处理方式,JVM能够更好地管理和优化老年代的性能和空间利用率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值