码迷,mamicode.com
首页 > 其他好文 > 详细

JVM 常用参数

时间:2019-11-29 11:08:27      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:频繁   次数   int   存在   运行时   perm   导出   city   erro   

跟踪垃圾回收

-XX:PrintGC

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


Heap

PSYoungGen 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 -version

java -server -version

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

JVM 常用参数

标签:频繁   次数   int   存在   运行时   perm   导出   city   erro   

原文地址:https://www.cnblogs.com/fubinhnust/p/11956013.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!