Java面试专题六之JVM、GC

JVM内存结构

JVM体系概述

在这里插入图片描述

Java8以后的JVM

在这里插入图片描述

常见的垃圾回收算法

引用计数
在这里插入图片描述
复制在这里插入图片描述
标记清除在这里插入图片描述
标记整理在这里插入图片描述

GC Roots

枚举根节点做可达性分析(根搜索路径)
在这里插入图片描述

要进行垃圾回收,如何判断一个对象是否可以被回收?

在这里插入图片描述
Java中可以作为GC Roots的对象

虚拟机栈(栈帧中的局部变量区,也叫做局部变量表) 中引用的对象;
方法区中的类静态属性引用的对象;
方法区中常量引用的对象。
本地方法栈中JNI(Native方法)引用的对象

关于JVM调优和参数配置,请问如何盘点查看JVM系统默认值

JVM参数类型

标配参数
  • -version
  • -help
  • java -showversion
    在这里插入图片描述
X参数(一般了解)
  • -Xint 解释执行
  • -Xcomp 第一次使用就编译成本地代码
  • -Xmixed 混合模式
XX参数
Boolean类型

-XX: **+或者-**某个属性,+表示开启,-表示关闭
1.是否打印GC收集细节

jinfo -flag PrintGCDetails 13632

在这里插入图片描述
2.是否使用串行垃圾回收器

KV设值类型

-XX:属性key=属性值value

-XX:MetaspaceSize=128m
-XX:MaxTenuringThreshold=15

在这里插入图片描述在这里插入图片描述

经典参数: -Xms和-Xmx
-Xms <=> -XX:InitialHeapSize
-Xmx <=> -XX:MaxHeapSize

JVM盘点家底查看初始默认值

-XX:+PrintFlagsInitial
在这里插入图片描述
-XX:+PrintFlagsFinal
在这里插入图片描述

运行java命令的同时打印出参数

在这里插入图片描述## JVM常用的基本配置参数
在这里插入图片描述
在这里插入图片描述

-Xms:初始大小内存,默认为物理内存1/64 <=> -XX:InitialHeapSize
-Xmx:最大分配内存,默认为物理内存的1/4 <=> -XX:MaxHeapSize
-Xss:设置单个线程栈的大小,一般默认为512k~1024k <=> -XX:ThreadStackSize
在这里插入图片描述
-Xms128m -Xmx4096m -Xss1024k -XX:MetaspaceSize=512m -XX:+PrintCommandLineFlags -XX:+PrintGCDetails -XX:+UseSerialGC
-Xmn:设置年轻代大小
-XX:MetaspaceSize,设置元空间大小:元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元空间并不在虚拟机中,而是使用本地内存。因此,默认情况下,元空间的大小仅受本地内存限制
-XX:+PrintGCDetails
在这里插入图片描述在这里插入图片描述

-XX:SurvivorRatio
设置新生代中eden和s0/s1空间比例
默认:-XX:SurvivorRatio=8, Eden:s0:s1=8:1:1
假如:-XX:SurvivorRatio=4, Eden:s0:s1=4:1:1
SurvivorRatio值就是设置eden区的比例占多少,s0/s1相同

-XX:NewRatio
配置年轻代和老年代在堆结构的占比
-XX:NewRatio=2 新生代占1,老年代占2,年轻代占整个堆的1/3
假如-XX:NewRatio=4 新生代占1,老年代占4,年轻代占整个堆的1/5
NewRatio值就是设置老年代的占比,剩下的1给新生代

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

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值