JVM常用基础参数-栈内存Xss讲解
大厂面试题:
1、JVM垃圾回收时候如何确定垃圾?是否知道什么是GC Roots
2、你说你做过JVM参数调优和参数配置,请问如何盘点查看JVM系统默认值
3、你平时工作中用过的JVM常用基本配置参数有哪些?
4、强引用、软引用、弱引用、虚引用费别是什么?
5、请你谈谈对OOM的认识
6、GC垃圾回收算法与垃圾收集器的关系?分别是什么请你谈谈?
7、 怎么查看服务器默认的垃圾回收器是哪一个?
生产上如何配置垃圾收集器的?
谈谈你对垃圾收集器的理解?
8、G1垃圾收集器
9、生产环境服务器变慢,诊断思路和性能评估谈谈?
10、假如生产环境CPU占用过高,请谈谈你的分析思路和定位。
11、对于JDK自带的监控和性能分析工具用过哪些?一般你怎么用的?
1、JVM常用参数
-Xms 初始堆内存大小,默认物理内存64/1
-Xms = -XX:InitialHeapSize
-Xmx 最大堆内存,默认物理内存4/1
-Xmx = -XX:MaxHeapSize
-Xss 栈内存大小
设置单个线程栈大小,一般默认512~1024kb。
单个线程栈大小跟操作系统和JDK版本都有关系
-Xss = -XX:ThreadStackSize
-Xmn 年轻代大小
-XX:MetaspaceSize 元空间大小
元空间本质跟永久代类似,都是对JVM规范中方法区的实现。
不过元空间与永久代最大的区别在于:元空间并不在虚拟机中,而是使用本机内存。
因此,元空间大小仅受本地内存限制。
-XX:+PrintGCDetails 打印GC详细日志信息
-XX:SurvivorRatio 幸存者比例设置
-XX:NewRatio 新生代比例设置
-XX:MaxTenuringThreshold 进入老年代阈值设置
2、查看-Xss初始大小
(1)-XX:ThreadStackSize=0含义
-XX:ThreadStackSize=0不是说虚拟机栈大小为0,0表示为jvm默认值(这个虚拟机栈默认值是根据操作系统和JDK版本来的)
(2)JDK个版本-Xss默认大小
【1】JDK8默认-Xss大小为:
windows操作系统:
除windows操作系统外:
【2】JDK9默认-Xss大小为:
【3】JDK10默认-Xss大小为:
【4】JDK11默认-Xss大小为:
【5】JDK12默认-Xss大小为:
【6】Java JVM命令行参数如何在oracle官网查找,例如:查找-Xss参数