GC Roots以及jvm参数

1.什么是GC Roots?

java中可以作为GC Roots的对象:①虚拟机栈(栈帧中的局部变量区,也叫作局部变量表)中引用的对象②方法区中的类静态属性引用的对象③方法区中常量引用的对象④本地方法栈中native方法引用的对象。通过一系列名为GC Roots的对象作为起始点,从这个被称为GC Roots的对象开始向下搜索,GC Roots没有任务引用链相连时,则说明此对象不可用,也即给定一个集合的引用作为根出发,通过引用关系遍历到的(可到达的)对象就被判定为存活,没有被遍历到的就自然被判定为死亡。

2.jvm参数类型?

①标配参数:-version等②x参数:-Xint解释执行,-Xcomp第一次使用就编译成本地代码,-Xmixed混合模式③xx参数:Boolean类型:-XX:+或者-某个属性值,+表示开启-表示关闭,查看一个正在运行中的java程序,他的某个jvm参数是否开启具体是多少的命令,jps,jinfo。kv设值类型:-XX:MetaspaceSize=128m

3.常用jvm参数?

①-Xms初始大小内存,默认为物理内存1/64,等价于-XX:InitialHeapSize

②-Xmx:最大分配内存,默认为物理内存的1/4,等价于-XX:MaxHeapSize

③-Xss:s设置单个线程栈的大小,一般默认为512k-1024k等价于-XX:ThreadStackSize

④-Xmn设置年轻代大小

⑤-XX:MetaspaceSize设置元空间,元空间并不在虚拟机中,而是使用本地内存,默认情况下元空间的大小仅受本地内存限制。比如:-Xms128m -Xmx4096m -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC

⑥-XX:+PrintGCDetail:输出详细GC收集日志信息,

⑦-XX:SurvivorRatio:设置新生代中eden和s0/s1空间的比例,默认-XX:SurvivorRatio=8,Eden:s0:s1=8:1:1,修改-XX:SurvivorRatio=4,Eden:s0:s1=4:1:1

⑧-XX:NewRatio:配置年轻代与老年代在堆结构的占比,默认-XX:NewRatio=2新生代占1老年代占2,年轻代占整个堆的1/3.

⑨-XX:MaxTenuringThreshold=0设置垃圾最大年龄,如果设置为0的话,则年轻代对象不经过Survivor区,直接进入老年代,对于年老代多的应用,可以提高效率,如果将此值设置为一个较大值,则年轻代对象会在Survivor多次复制,这样可以增加对象在年轻代的存活时间,增加在年轻代即被回收的概率。

发布了254 篇原创文章 · 获赞 18 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/qq_36594703/article/details/104485793
今日推荐