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

欢迎关注我的微信公众号:窥豹

窥豹