JVM的垃圾回收机制

每起一个jvm实例是一个进程。一个进程下可以运行多个线程。每一个jvm中的线程在操作系统中都有一个原生线程唯一对应。JVM每一个线程启动的初始化之后会进行本地化存储,缓冲区分配,同步对象,程序计数器的操作,然后thread.run 调用本地方法区的方法调用操作系统的线程执行。线程执行结束后,操作系统线程会释放,同步释放线程占用资源。

JVM 常用的线程:

 虚拟机线程,周期性人物线程,GC线程,编辑器线程,信号分发线程。

· 线程共有区域才需要垃圾回收机制(随着JVM的创建而创建,销毁而销毁),线程独有区域线程技术会自动回收不需要垃圾回收机制。

JVM的垃圾回收机制主要是作用于堆,堆主要分为新生代、老年代、永久代。JVM将GC扩展到了方法区用永久代来处理方法区。

方法区的分布:


堆内存的分布

创建一个对象如果对象大小超过某个限制就会直接进入老年代,如果不超过就会放在Eden区,如果第一次Eden区的内存占用满了,会触犯一次Minor GC ,会把不可达的的对象回收,然后将剩下的拷入SurvivorFrom 中。Eden第二次满了之后,会进行第二次Minor GC 将Eden和SurvivorFrom 同时扫描进入SurvivorTo 中,会反复的切换,这样做的好处是清理碎片化内存。

如果老年代的内存也满了会触发MajorGC 它会对老年代进行全扫描标记,然后将未标记的清除。(使用的标记算法)当老年代无法分配内存空间时,会抛出Out of Memory

永久代的数据会永久存储,java8 用元数据区代替了永久代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值