常用虚拟机参数(三)

知识点梳理:

如果垃圾回收频繁出现,或者占用了太长的CPU时间,是需要引起重视的哦,亲;


解析虚拟机日志

-XX:+PrintGC使用此参数启动Java虚拟机后,只要遇到GC就会打印日志;

图示:如下日志信息


说明:该日志显示,一共进行了4GC,每次GC占用一行,在GC前,堆空间使用量约为4MBGC后堆空间使用量为377KB.当前可用的堆空间总和约为16MB15936KB.最后显示的是本次GC话费的时间;


-XX:+PrintGCDetails可打印更加详细的日志信息,还会使虚拟机在退出前打印堆的详细信息,详细信息描述了当前堆的各个区间的使用情况。

图示:可能输出的样式:


说明:

  1. 系统经历3GC,第1次仅为新生代GC,回收效果是新生代从回收前的8MB降低到1MB
  2. 2次(加粗字体):是FULL GC,它同时回收了新生代,老年代和永久区。日志显示,新生代在这次GC中没有释放空间,老年代从16MB降低到了13MB。整个堆大小从26MB左右降低为13MB左右。永久区的大小没有变化。在日志的最后,显示了GC花费的时间,其中user表示用户态CPU耗时,sys表示系统CPU耗时,real表示GC实际经历时间;
  3. 在该示例中,当前新生代总大小为9792KB,已经使用4586KB。紧跟其后的316进制数字表示新生代的下界,当前上界和上界;
  4. 使用上界减去下界就能得到当前堆空间的最大值,使用当前上界减去下界,就是当前虚拟机已经为程序分配的空间大小;
  5. 如果当前上界等于下界,说明当前的堆空间已经没有扩大的可能;

-XX:+PrintHeapAtGC:它会在每次GC前后分别打印堆的信息,如同-XX:+PrintGCDetails的最后输出一样;

图示:部分输出样式



-XX:PrintGCTimeStamps该参数会在每次GC发生时,额外输出GC发生的时间,该输出时间为虚拟机启动后的时间偏移量

图示:下图表示在系统启动后0.08秒,0.088秒,0.094秒发生了3GC


-XX:+PrintGCApplicationConcurrentTime由于GC会引起应用程序停顿,还使用此参数打印应用程序的执行时间;

-XX:+PrintGCApplicationStoppedTIme用来打印应用程序由于GC而产生的停顿时间;

-XX:+PrintReferenceGC:用来跟踪系统内的软引用,弱引用,虚引用和Finallize队列;


-Xlogge指定虚拟机将GC日志,以文件形式输出;

如:-Xloggc:log/gc.log启动虚拟机,可以在当前目录下的log文件夹下的gc.log文件中记录所有的GC日志,如下图:

类的加载/卸载的跟踪

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

  1. -XX:+TraceClassLoading:只跟踪类的加载;
  2. -XX:+TraceClassUnLoading:只跟踪类的卸载;

-XX:+PrintClassHistogram在运行时打印系统中类的分布情况情况;在系统启动时,加上此参数,然后在Java的控制台中按下Ctrl+Break组合键,控制台就会显示当前的类信息柱状图;


查看系统参数

-XX:+PrintVMOptions可在程序运行时,打印虚拟机接受到的命令行显示参数,输入如下:

说明:虚拟机启动时,命令行明确指定了UseSerialGC,DisableExplicitGC两个参数;


-XX:+PrintCommandLineFlags:可以打印传递给虚拟机的显示和隐式参数,隐式参数未必是通过命令行直接给出的,可能是由虚拟机启动时自行设置的;

图示:可能的一种输出结果:

-XX:+PrintFlagsFinal它会打印所有的系统参数的值


虚拟机工作模式

能力:虚拟机支持两种ClientServer两种运行模式。通过-client启用前者,通过-server启用后者。默认,虚拟机会根据当前计算机系统环境自行选择运行模式;

属性:

-version:查看当前模式

启用-server模式:


-XX:PrintFlagsFinal查看两种模式下的不同参数

模式对比:

Server启动较慢,会收集更多的系统性能信息,使用更复杂的算法对程序进行优化。当程序运行稳定后,该模式的速度远快于Client模式;

  1. 64位系统中,虚拟机更倾向于使用Server
  2. 系统最大堆约为1GB

Client适用于用户界面,运行时间不长,追求启动速度;系统最大堆,约为256MB


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值