JVM 在线上运行的时候,可以调整一些运行参数,查看参数帮助如下:
运行 java -h
可以看到 Java 运行可调整的参数。
运行 java -X
可以查看 Java 支持的额外参数。
注意一些参数的默认开启在 JDK6 和 JDK7 之间会有差异,甚至在 JDK7 的不同 update
也会有差异,运行 java -XX:+PrintFlagsFinal
查看默认的参数配置。
参考: Java HotSpot VM Options The most complete list of -XX options for Java JVM Tuning JVM Garbage Collection for Production Deployments JVM -XX: 参数介绍
以下是一些经验调整:
-d64
# 运行在 64 位数据模式下
-server
# 选择 server VM
-Xms1024m
# 初始堆大小,直接固定到 Xmx
-Xmx1024m
# 最大堆大小,根据服务器性能和请求量调整,太大了会导致 GC 时间太长
-XX:+DoEscapeAnalysis:
# 支持逃逸分析(将局部对象实例存储在栈上)
# http://www.iteye.com/topic/473355
-XX:+UseTLAB
# Use thread-local object allocation
# 使用本地线程实例存储,可以减少堆共享锁的竞争
-XX:-RelaxAccessControlCheck
# Relax the access control checks in the verifier
# JDK7 默认不开启
-XX:+AggressiveOpts
# Enable aggressive optimizations - see arguments.cpp
# 启用最新 JVM 调优成果
-XX:+UseBiasedLocking
# Enable biased locking in JVM
# 偏向锁(建议去了解一下轻量级锁和偏向锁)
# 优化单线程程序下面锁资源速度,不适合多线程(所以到底 +/- 我存疑)
# http://www.iteye.com/topic/518066
-XX:+UseFastAccessorMethods
# Use fast method entry code for accessor methods
# 优化 get/set 方法
-XX:ThreadStackSize
# Thread Stack Size (in Kbytes)
# 经验值 4096
-XX:+UseLargePages
# Use large page memory
# 大内存分页
-XX:+UseStringCache
# Enables caching of commonly allocated strings.
# 启用缓存常用的字符串
-XX:+UseCompressedStrings: Use a byte[] for Strings which can be represented as pure ASCII. (Introduced in Java 6 Update 21 Performance Release)
# 降低内存消耗,浪费一点 CPU
# http://stackoverflow.com/questions/8833385/is-support-for-compressed-strings-being-dropped
-XX:+OptimizeStringConcat: Optimize String concatenation operations where possible. (Introduced in Java 6 Update 20)
# 优化字符串连接,对模板渲染操作应该会很有意义
-XX:MaxPermSize
# Maximum size of permanent generation (in bytes)
# 经验值 128m
原文链接: Java 运行参数调整 | Log4D
3a1ff193cee606bd1e2ea554a16353ee
欢迎关注我的微信公众号:窥豹