JVM常用基础参数讲解(OK)

GC监测

1)jstat –gcutil [pid] [intervel] [count]
2)-verbose:gc // 可以辅助输出一些详细的GC信息;-XX:+PrintGCDetails // 输出GC详细信息;-XX:+PrintGCApplicationStoppedTime // 输出GC造成应用暂停的时间
-XX:+PrintGCDateStamps // GC发生的时间信息;-XX:+PrintHeapAtGC // 在GC前后输出堆中各个区域的大小;-Xloggc:[file] // 将GC信息输出到单独的文件中,建议都加上,这个消耗不大,而且对查问题和调优有很大的帮助。gc的日志拿下来后可使用GCLogViewer或gchisto进行分析。
3)图形化的情况下可直接用jvisualvm进行分析。

4)查看内存的消耗状况

(1)长期消耗,可以直接dump,然后MAT(内存分析工具)查看即可

(2)短期消耗,图形界面情况下,可使用jvisualvm的memory profiler或jprofiler


大厂面试题:

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        进入老年代阈值设置

 

 

 

Xss规定了每个线程堆栈的大小。一般情况下256K是足够了。影响了此进程中并发线程数大小。

-Xms初始的Heap的大小。

-Xmx最大Heap的大小。

在很多情况下,-Xms和-Xmx设置成一样的。这么设置,是因为当Heap不够用时,会发生内存抖动,影响程序运行稳定性。

 

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参数

 

 

 

 

 

 



原文链接:https://blog.csdn.net/longgeqiaojie304/article/details/93972700

posted @ 2021-03-17 09:23  技术颜良  阅读(181)  评论(0编辑  收藏  举报