1. 标准参数 (-)
这些参数在所有JVM实现中都是标准化的,并且向后兼容。
-classpath 或 -cp: 设置类路径,用于查找用户类和依赖项的位置。
-jar: 用于执行包含main类的jar文件。
-version: 显示Java运行时环境的版本信息并退出。
-verbose: 输出更多诊断信息,例如class加载过程。
-showversion: 显示版本信息并继续执行。
-help: 输出关于如何使用命令行选项的帮助信息并退出。
2. 非标准参数 (-X)
这些参数不是严格标准化的,但大多数JVM实现会支持它们,但不保证所有JVM都支持或者在未来版本中保持不变。
-Xms: 设置Java堆的初始大小。 >memory startup
-Xmx: 设置Java堆的最大大小。 >memory maximum
-Xmn: 设置年轻代(Young Generation)内存区域的大小。 等价于将 - XX:NewSize 和 -XX:MaxNewSize 设置为同样大小
-Xss: 设置每个线程的栈大小。 >stack size
3. 非稳定参数 (-XX)
这些参数是非标准的,不同JVM供应商可能有不同的实现,并且在未来的Java版本中可能会更改或移除。
-XX:MaxMetaspaceSize: 设置元空间(Metaspace)的最大大小。
-XX:+UseG1GC: 启用G1垃圾收集器。
-XX:G1HeapRegionSize: 设置G1垃圾收集器中堆区域的大小。
-XX:SurvivorRatio: 设置年轻代中eden区与幸存者区的空间比例。
-XX:+UnlockExperimentalVMOptions: 解锁实验性的JVM选项。
其他示例参数:
-Dproperty=value: 设置系统属性。
-XX:ErrorFile: 定义错误日志文件的位置。
-XX:+PrintGCDetails: 输出详细的垃圾回收信息。
-XX:+DisableExplicitGC: 禁止显式调用System.gc()。
java -server
这是一个JVM启动参数,用于指定Java虚拟机采用服务器模式(Server VM)运行。服务器模式相较于客户端模式(Client VM),通常会优化JVM以获得更好的吞吐量和更高效的并发处理能力。在服务器模式下,JVM的初始堆大小较大,预设的垃圾回收器偏向于并行或并发收集,牺牲了一些启动速度来换取整体性能提升。
一、jps
jps主要用来输出JVM中运行的进程状态信息
-l 输出main类或Jar的全限名
-v 输出传入JVM的参数
二、jstack
jstack主要用来查看某个Java进程内的线程堆栈信息。
1、当系统cpu使用很高时可以使用top定位到具体的进程
2、然后使用top -Hp pid 来定位到具体的线程
3、printf “%x\n” 21742 然后将线程id转换成16进制
4、使用jstack pid(进程id)获取某一时刻进程的所有堆栈信息
其中的nid就是线程的十六进制显示(多次执行对比结果)
三、jmap
jmap用来查看堆内存使用状况
jmap -heap pid
显示Java堆的如下信息:
被指定的垃圾回收算法的信息,包括垃圾回收算法的名称和垃圾回收算法的详细信息。
堆的配置信息,可能是由命令行选项指定,或者由Java虚拟机根据服务器配置选择的。
堆的内存空间使用信息,包括分代情况,每个代的总容量、已使用内存、可使用内存。如果某一代被继续细分(例如,年轻代),则包含细分的空间的内存使用信息。
-histo[:live]
显示Java堆中对象的统计信息,包括:对象数量、占用内存大小(单位:字节)和类的完全限定名。
-dump:[live,]format=b,file=
生成Java虚拟机的堆转储快照dump文件。具体说明如下:
live参数是可选的,如果指定,则只转储堆中的活动对象;如果没有指定,则转储堆中的所有对象。
format=b表示以hprof二进制格式转储Java堆的内存。
file=用于指定快照dump文件的文件名
jmap -dump:live,format=b,file=java.dump 2823