JVM笔记

1.JVM是虚拟机通用协议,hotspot实现了协议

2.jvm内存优化 指的是公共区域 即:方法去和堆区,其他的都是线程私有的。

3.堆区有分 新生区/老年区/元空间(1.8以后没有了永久区改成了元空间)。新生区又分了 伊甸区和存活区0/1

4.伊甸区回收叫Minor GC ,老年区垃圾回收叫Full GC.

5.新生区垃圾回收使用复制算法,老年区使用标记清楚/标记整理

6.新生区 中的伊甸区和survivor0/survivor1的比例是8:1:1,对象在Eden区创建

7.新生区复制算法过程:第一次伊甸区内存不够 发生Minor GC 存活下的对象 被MinorGC打包放在幸存区0,  下次对象在Eden区出生以后 (包括幸存区0 存活下的对象),在经过一次MinorGC后如果对象还存活,并且能够被幸存区1所容纳,则使用复制算法将存活的对象复制到幸存区1,然后清理所有使用过的Eden和幸存区0,并且将对象的年龄设置为1,以后对象每在幸存区熬过一次MinorGC,年龄就+1,当对象年龄达到某个值时(默认15 通过-XX:MaxTenuringThreshold 来设置),这些对象就进入老年区成为老年代。幸存区0/1之间是来回变化的,谁的空间为空 谁就负责接受 复制过来的存活对象。

8.老年区标记清楚/整理算法:标记清楚指通过一次遍历 标记活着的对象,二次遍历清楚死的对象,这样会产生内存碎片;标记整理则多次遍历区碎片化。

9.堆内存调优部分参数:-Xms 设置初始分配大小 如-Xms1024m(默认是物理内存的1/64);-Xmx 设置最大分配内存 如-Xms1024m(默认是物理内存的1/4);这两个值一般设置成一样的。-XX:+PrintGCDetails 输出详细的GC处理日志。

long maxMemory = Runtime.getRuntime().maxMemory();//返回java虚拟机能够使用的最大内存 对应-Xmx

long totalMemory = Runtime.getRuntime().totalMemory();//返回java虚拟机当前用到的内存

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值