java gc与heap内存简述

java内存结构和gc算法有很多种,二者也是互相决定的;使用不同的gc算法的jvm会有不同的内存结构。这里就简单整理下常见的sun jvm内存结构和回收算法。

一、java的内存结构


java的内存分为如上几块。

Virtual:如果 -Xms指定的值比-Xmx的小,那么两者的差值就是图上所示的virtual区域

Perm:永久区,主要用来放JVM自己的反射对象,比如类对象和方法对象等。对于spring hibernate这些需要动态类型支持的框架,这个区域需要足够的空间。这个区域不属于heap中。

Young:这里是较新的对象活跃区域。新创建的对象处于Eden区中,经过一次回收的对象会转移到From区;From区再经过一次回收会转移到To区;To区再经过一次回收就会移出Young区转移至Tenured(Old)区。

Tenured(Old):这里是经过数次GC后仍然存活的对象所处区域,池对象(如线程池)就活跃在这个区域中。


二、java gc机制

由于垃圾收集算法在各个虚拟机以及不同的平台上会有不同的实现,所以这里只大概记录一下几个基本的算法。

1.引用计数:

为每一个对象添加一个计数器,计数器记录了对该对象的活跃引用的数量。如果计数器为0,则说明这个对象没有被任何变量所引用,即应该进行垃圾收集。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值