JAVA基础之JVM

JVM基础结构(运行时数据区)

JVM是运行在内存中的,因为速度足够快。

 

JVM线程私有部分异常

程序计数器内存不会溢出:程序计数器是一个int类型的值,指向当前线程正在运行的字节码的行号,占用小不会溢出

虚拟机栈会溢出,在递归过程中深度超过限定深度,抛出StackOverflow

JMM(JVM内存模型)

JAVA中的对象回收,作为GC Roots的对象包括:

1.虚拟机栈(本地变量表)中引用的对象。

2.方法区:类静态属性引用的对象。

3.方法区:常量引用的对象。

通过可达性分析算法,计算是否能被GC roots引用,不被引用则回收。

GC发生在新生代,存活对象会在F-S、T-S两个交换区中反复交换,每次GC年龄增加。

动态对象年龄判定:存活区放不下的时候,存活对象直接进入老年代。

空间担保:

在发生minor gc之前,虚拟机会检测 : 老年代最大可用的连续空间>新生代all对象总空间?

          1、满足,minor gc是安全的,可以进行minor gc。

          2、不满足,虚拟机查看HandlePromotionFailure参数:

                   (1)为true,允许担保失败,会继续检测老年代最大可用的连续空间>历次晋升到老年代对象的平均大小。若大                           于,将尝试进行一次minor gc,若失败,则重新进行一次full gc。

                    (2)为false,则不允许冒险,要进行full gc(对老年代进行gc)。

Minor GC为什么需要两块小的区域?而不是直接把新生代直接分为50%?

因为90%的对象都不需要回收,只有10%的对象需要回收。

FULL GC会导致JVM全停止,减少FULL GC的次数能有效提高效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值