java基础

java_JVM

2018-05-21  本文已影响13人  飞翔的鲲

JVM内存模型


JVM内存模型你只要看这一篇就够了
https://www.jianshu.com/p/c9ac99b87d56
程序猿的日常——JVM内存模型与垃圾回收
https://www.cnblogs.com/xing901022/p/7725961.html

image.png image.png

Java运行时,各种类型存储介绍

存放class类对象:
1.类的基本信息
2.方法信息
3.常量池
4.静态变量

垃圾回收


垃圾收集器


参考
http://blog.csdn.net/tjiyu/article/details/53983650

image.png

频繁GC优化


http://www.cnblogs.com/xing901022/p/9084941.html

image.png

由于JVM设计者认为,大部分的对象都是新创建的,生命周期都不长。因此新建的对象会直接放在新生代中,并采用复制回收机制。即保证to区总是空的,每次触发GC的时候,就会把Eden和from survivor中的还存活的对象拷贝到to区中。然后to变成了from,from变成to。这样反复几次,还存活的对象,就会拷贝到old老年代当中。

在配置JVM的时候就有几个比较重要的参数:

-Xms 和 -Xmx 配置了堆的最小和最大内存
-XX:NewSize 和 -XX:MaxNewSize 配置了新生代的内存。最大是Xmx的一半,不过最好还是看业务场景
-XX:NewRatio 设置新生代和老年代的比例,如 -XX:NewRatio=3 指定老年代/新生代为3/1
-XX:SurvivorRatio 设置survivor与eden的比例,如 -XX:SurvivorRatio=10 表示eden是survivor的10倍,即survivor每个占1/12,eden占10/12
-XX:InitialTenuringThreshold, -XX:MaxTenuringThreshold and -XX:TargetSurvivorRatio 控制进入老年代的条件,例如 , -XX:MaxTenuringThreshold=10 -XX:TargetSurvivorRatio=90 设定老年代阀值的上限为10,幸存区空间目标使用率为90%
-XX:+NeverTenure and -XX:+AlwaysTenure 分别表示永远不进入老年代,和一次GC存活就进入老年代
上一篇 下一篇

猜你喜欢

热点阅读