常用Java虚拟机参数

常用Java虚拟机参数

  • java虚拟机参数如何输入

    右键---->Run As---->Run Configurations---->选择Arguments---->在VM arguments中输入

常用跟踪调试参数

  • -XX:PrintGC 只要遇到GC就会打印日志

    • 上图中每个[GC ~~~~] 表示一次GC结果
    • Allocation Failure 表示此次GC是由于新生代空间不足引起的
    • 65423k -> 696k(251392k) 表示此次GC将对空间由65423k清除垃圾后变成696k,总的堆空间为251392k
    • 0.0011844 secs 表示此次GC耗时0.0011844秒
  • -XX:+PrintGCDetails 遇到GC打印更加详细的信息

  • 上图第一个红框PSYoungGen表示这是一次新生代GC,[PSYoungGen: 65423K->10680K(76288K)] 表示新生代GC情况,65423K->63890K(251392K), 0.0299408 secs 表示堆的总体空间情况和耗时,[Times: user=0.09 sys=0.03, real=0.03 secs] user表示用户态CPU耗时,sys表示系统CPU耗时,real表示GC实际经历的时间。

  • 上图第二个框FULL GC (Ergonomics) 表示这次是FULL GC,会同时回收新生代,老年代和永久区。Ergonomics表示引起这次GC的原因(Ergonomics具体代表什么原因可以查阅其他资料)。后面PSYoungGen代表新生代回收情况,ParOldGen表示老年代的回收情况,Metaspace表示永久区的回收情况。

  • 要注意的是:PSYoungGen表示的是用 Paralle Scavenge 回收器进行回收的,ParOldGen表示用 Parallel Old 回收器进行回收的。如果使用的是其他回收器的话,关键字是不一样的。

  • -XX:PrintGCTimesStamps 该参数会在GC是输出虚拟机启动后的偏移时间。

  • -XX:PrintGCApplicationConcurrenTime 可以打印应用程序的执行时间

  • -XX:printGCApplicationStoppedTime 可以打印应用程序由于GC而停顿的时间。

  • -XX:PrintReferenceGC 可以跟踪系统的软引用,弱引用,虚引用和Finallize队列

  • -Xloggc:log/gc.log 指定GC日志输出到文件中

  • -verbose:class 跟踪类的加载和卸载

  • -XX:+TraceClassLoading 跟踪类的加载

  • -XX:+TraceClassUnloading 跟踪类的卸载

  • -XX:+PrintClassHistogram 加入该参数后,在java控制台中按下Ctrl+Break键,控制台会显示当前的类信息柱状图

  • -XX:+PrintVMOptions 可以在程序运行时打印虚拟机接收到的显式参数(即程序员通过命令给出的参数)

  • -XX:+PrintCommandLineFlags 可以打印虚拟机接收到的显示参数和隐式参数(即虚拟机启动时自行设置的参数)

  • -XX:+PrintFlagsFinal 会打印所有的系统参数,多达500多行

堆的配置参数

  • -Xms 配置初始堆大小,java程序启动时,虚拟机就会分配一块初始堆大小的空间 例-Xms20m 就是分配初始堆大小为20M
  • -Xmx 配置最大堆,当初始堆大小空间耗尽后,虚拟机会对堆空间进行扩展,扩展上限为最大堆空间
  • -Xmn 配置新生代大小,新生代大小一般为整个堆空间的1/3到1/4左右
  • -XX:SurvivorRatio 用来设置新生代中eden空间和from/to空间的比例关系,即--XX:SurvivorRatio = eden/from = eden/to
  • -XX:NewRatio 设置新生代和老年代的比例
  • -XX:+HeapDumpOnOfMemoryError 当内存溢出时导出整个堆的信息
  • -XX:+HeapDumpPath 可以指定导出堆的存放路径

非堆内存的参数配置

  • -XX:PermSize 初始的永久区大小
  • -XX:MaxPermSize 最大永久区
  • -Xss 指定线程的栈大小
  • -XX:MaxDirectMemorySize 指定最大可用直接内存 默认值为最大堆空间即-Xmx
  • -server 指定虚拟机的工作模式为Server
  • -client 指定虚拟机的工作模式为client 默认为client

posted on 2020-04-24 15:52  ggsdduzdl  阅读(292)  评论(0编辑  收藏  举报

导航