JVM 常用参数

ⅰ亾dé卋堺 提交于 2019-12-06 02:04:47

跟踪垃圾回收

-XX:PrintGC

-XX:+PrintGCDetails 更详细的信息,新生代GC还是老生代GC,永久区的GC,gc的时间

HeapPSYoungGen      total 76288K, used 1311K [0x000000076ab00000, 0x0000000770000000, 0x00000007c0000000)  eden space 65536K, 2% used [0x000000076ab00000,0x000000076ac47c58,0x000000076eb00000)  from space 10752K, 0% used [0x000000076f580000,0x000000076f580000,0x0000000770000000)  to   space 10752K, 0% used [0x000000076eb00000,0x000000076eb00000,0x000000076f580000)ParOldGen       total 175104K, used 478K [0x00000006c0000000, 0x00000006cab00000, 0x000000076ab00000)  object space 175104K, 0% used [0x00000006c0000000,0x00000006c0077b80,0x00000006cab00000)Metaspace       used 2777K, capacity 4486K, committed 4864K, reserved 1056768K  class space    used 299K, capacity 386K, committed 512K, reserved 1048576K

-XX:+PrintHeapAtGC : 每次gc前后分别打印堆信息

-XX:+PrintGCTimeStamps 分析gc发生的时间,在每次gc时额外输出gc发生的时间

-XX:+PrintGCApplicationConcurrentTime 由于gc会引起应用程序停顿,特别关注app的执行时间

-XX:+PrintGCApplicationStoppedTime 停顿时间

-XX:+PrintReferenceGC 跟踪系统软引用,弱引用,Finallize队列

-Xloggc:log/gc/log 默认gc日志控制台输出,该参数指定写入日志文件

类加载和卸载的跟踪

-verbose:class 跟踪类的加载和卸载 ,最后一次加载的类没有机会被卸载

-XX:TraceClassLoading 单独跟踪类的加载

-XX:TraceClassUnloading 跟踪类的卸载

-XX:+PrintClassHistogram 运行时打印和查看系统类的分布情况

系统参数查看

-XX:+PrintVMOptions 打印虚拟机接收到的命令行显示参数

-XX:+PrintCommandLineFlags 包含显示指定和虚拟机自行设置的参数

-XX:+PrintFlagsFinal 打印系统所有的参数值

让性能飞起来 :堆的配置参数

-Xms 初始堆的大小

-Xmx 最大堆

实际最大可用内存(与-Xmx存在偏差) = -Xmx最大内存 - from区的大小 (垃圾回收空间换时间的算法)

设置-Xms和-Xmx大小相等,可以减少gc的次数

新生代配置

-XX:SurvivsorRatio 设置新生代eden和from/to的比例关系 : eden/from = eden/to

-Xmn 年轻代大小

基本配置策略:尽可能将对象预留在新生代,减少老年代GC的次数

## 其他参数(1)最高优先级:  -XX:NewSize=1024m和-XX:MaxNewSize=1024m   (2)次高优先级:  -Xmn1024m  (默认等效效果是:-XX:NewSize==-XX:MaxNewSize==1024m)   (3)最低优先级:-XX:NewRatio=2

 

-XX:NewRatio 新生代和老年代的比例

堆溢出处理

-XX:HeapDumpOnOutOfMemoryError 在内存溢出时导出整个堆信息

-XX:HeapDumpPath=./a.dump 导出堆信息的路径

-XX:OnOutOfMemoryError=脚本文件 在内存溢出时执行脚本(可以是导出java线程信息)

非堆内存的参数配置

方法区

jdk1.6和1.7

-XX:PermSize

-XX:MaxPermSize

jdk1.8

-XX:MaxMetaspaceSize

-Xss

直接内存

-XX:MaxDirectMemorySize 最大可用直接内存,默认值为最大堆空间

直接内存适合申请次数少,访问较为频繁的场合,如果内存空间本身需要频繁申请,并不适合使用直接内存。

虚拟机的工作模式 :Server 和Client

-client

-server : 64位操作系统更倾向于使用server模式

java -version  java -client -versionjava -server -version

两种模式下,可使用-XX:PrintFlagsFinal对比两种模式下参数的差异

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!