JVM 相关设置

-XX:+PrintFlagsInitial 打印所有 JVM 的默认参数。

-XX:+PrintFlagsFinal 打印经过修改之后的 JVM 参数。

-XX:+PrintGCDetials 执行过程中输出 GC 的过程。

-Xms100m 等价于 -XX:InitialHeapSize=100m 设置堆空间的初始内存大小为 100m,默认为物理内存 1/64。

-Xmx100m 等价于 -XX:MaxHeapSize=100m 设置对空间的最大内存大小为 100m,默认为物理内存 1/4。

-Xss1m(可以附加单位)等价于 -XX:ThreadStackSize=1024(指定单位为 kb)

-XX:SurvivorRatio=8 设置 S0 S1 区和 Eden 区比例为 1:1:8 。

-XX:NewRatio=3 设置新生代和老年代的比例为 1:3。

-XX:MaxTenuringThreshold=10 设置 S 区晋升老年代的时间门槛为生存 10 次 GC。

Parallel GC 设置

-XX:+UseParallelGC-XX:+UseParallelOldGC 两个参数参数相互激活,任意一个启动,就会 Parallel GC 和 Parallel Old GC 一起接管整个堆区的垃圾回收。

-XX:ParallelGCThreads 设置 Parallel GC 用于垃圾回收的线程数量,一般设置成等于 CPU 的核心数量大小。大于 8 的话可以:使用公式计算: 3+[5*Core_Count]/8]

-XX:+UseAdaptiveSizePolicy 使用自适应的调节策略,虚拟机会自动完成调优的工作。

jps

Java Process Status,用来查看 Java 当前正在运行的进程的相关信息。

jps 输出 PID 和进程名。

jps -l 输出 PID 和详细的进程名。

jps -v 打印 JVM 的设置参数。

jVirutalVM

可视化工具

jinfo

用来查看某一个 Java 进程的 JVM 参数设置,格式:

1
2
3
4
5
6
7
8
9
10
11
Usage:
jinfo <option> <pid>
(to connect to a running process)

where <option> is one of:
-flag <name> 输出设置项 name 目前的值
-flag [+|-]<name> 开启或者关闭 name 选项
-flag <name>=<value> 设置选项 name=value
-flags 输出所有的选项设置值
-sysprops 输出所有关于 Java 本身的设置选项值
<no option> 输出 JVM 选项值和 Java 选项值

PID 用 jps 来获取。

jstat

字节码相关

javac

javac file.java 将 Java 文件编译成 class 文件。

javac -g file.java 编译时生成局部变量表,不加的话默认指生成行号,源文件信息(IDEA 和 Eclipse 默认加此参数)。

javap

javap file.class 简略的反编译 class 文件。

javap -c file.class 只显示方法的字节码信息

javap -v file.class 显示所有反编译出来的信息。