部分参考https://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html 感谢楼主分享
JVM常用参数设置
首先先明白参数的类型:
1:标准参数(-)
所有的JVM实现都必须实现这些参数的功能
2:非标准参数(-X)
默认jvm实现这些参数的功能,但是并不保证所有jvm实现都满足,且不保证向后兼容
3:非Stable参数(-XX)
此类参数各个jvm实现会有所不同,将来可能会随时取消,需要慎重使用
参数名称 | 含义 | 默认值 | 备注 |
---|---|---|---|
-Xms | 初始堆大小 | 物理内存的1/64(<1GB) | 空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制. |
-Xmx | 最大堆大小 | 物理内存的1/4(<1GB) | 空余堆内存大于70%时,JVM会减少堆直到 -Xms的最小限制 |
-Xss | 每个线程的堆栈大小 | JDK5.0以后每个线程堆栈大小为1M,以前每个线程堆栈大小为256K.更具应用的线程所需内存大小进行 调整.在相同物理内存下,减小这个值能生成更多的线程.但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右 一般小的应用, 如果栈不是很深, 应该是128k够用的 大的应用建议使用256k。这个选项对性能影响比较大,需要严格的测试。(校长) 和threadstacksize选项解释很类似,官方文档似乎没有解释,在论坛中有这样一句话:"” -Xss is translated in a VM flag named ThreadStackSize” 一般设置这个值就可以了。 | |
-XX:NewSize | 新生代初始内存的大小 | 应该小于-Xms的值 | |
-XX:MaxNewSize | 新生代可被分配的内存的最大上限 | 应该小于-Xmx的值 | |
-XX:PermSize | 设置持久代初始值 | 物理内存的1/64 | |
-XX:MaxPermSize | 设置持久代最大值 | 物理内存的1/4 | |
-XX:MetaspaceSize | 元数据初始空间大小 | 元数据在堆外 | |
-XX:MaxMetaspaceSize | 元数据的最大空间 | 默认是没有限制的 | 元数据在堆外 |
-XX:MaxDirectMemorySize | 最大堆外内存 | ||
-XX: +HeapDumpOnOutOfMemoryError | OOM时记录快照 | ||
-XX:HeapDumpPaht=/path/dump | 快照地址 | ||
-XX:+PrintGC | 打印GC日志 | ||
-XX:PrintGCDetails | 打印GC详细信息 | ||
-XX:+PrintGCDateStamps | 日期格式GC时间 | ||
-xloggc:/path/gc.log | 打印GC日志地址 |