启动参数

Java 的启动参数有运行时参数JVM 参数,运行时参数就是 main 方法中的 args,而 JVM 参数是我们最常用的启动参数。

标准参数

标准参数(-):相对稳定的参数,每个版本的 JVM 都可用

非标 X 参数

非标 X 参数(-X):默认 JVM 实现参数的功能,但是不保证所有 JVM 都实现,不保证向后兼容

  • -Xms(memory start):堆初始大小(默认为物理内存的 1/64)
  • -Xmx(memory max):堆最大值(默认为物理内存的 1/4 或者 1G)
  • -Xss(stack size):线程栈的大小(一般默认为 512k)
  • -Xmn:年轻代的初始值及最大值(可用 -XX:NewSize 和 -XX:MaxNewSize 来分别设置)
  • -Xmixed:默认为混合模式,开始解释执行,启动速度较快,对热点代码实行检测和编译。
  • -Xint: 使用解释模式,启动很快,执行稍慢。
  • -Xcomp: 使用纯编译模式,执行很快,启动很慢。

非标 XX 参数

非标 XX 参数(-XX):各个 JVM 实现会有所不同,将来可能会随时取消

  • -XX:MaxDirectMemorySize ——最大非堆内存

调试

监控

常用监控工具

基础故障处理工具

  • jps:虚拟机进程状况工具
    • 列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一 ID。
  • jstat(statistic):虚拟机统计信息监视工具
    • 监视虚拟机各种运行状态信息,显示本地/远程虚拟机进程中的类加载、内存、gc 垃圾收集等运行时数据。
  • jinfo:Java 配置信息工具
    • 实时查看和调整虚拟机各项参数。
  • jmap:Java 内存映像工具
    • 生成堆转储快照(dump 文件);查询 finalize 执行队列、Java 堆和方法区的详细信息。
    • 频繁 GC 可以使用 jmap 进行问题定位
  • jhat:虚拟机堆转储快照分析工具
    • 与 jmap 搭配使用,分析 jmap 生成的堆转储快照。
  • jstack:Java 堆栈跟踪工具
    • 生成虚拟机当前时刻的线程快照,定位线程出现长时间停顿的原因,具体可以分析:
      • 死锁,死循环,请求外部资源阻塞,线程 wait(), sleep() 等。

可视化故障处理工具

  • JConsole:Java 监视与管理控制台
  • VisualVM:多合一故障处理工具
  • JMC:可持续在线的监控工具
  • MAT:内存分析工具