【JVM的垃圾回收及JVM工具命令】

一、对象存活的算法

1、引用计数法

2、根可达性分析算法

二、垃圾回收的算法

1、标记清除算法

2、复制算法

3、标记整理算法

4、分代收集算法

三、垃圾收集器

1、Serial

2、ParNew

3、Parallel Scavenge

4、Serial Old

5、CMS

6、G1

四、垃圾收集器的参数设置

 

 

参数描述
UseSerialGC虚拟机运行在 Client 模式下的默认值,打开此开关后,使用Serial+Serial Old 的收集器组合进行内存回收
UseParNewGC打开此开关后,使用 ParNew + Serial Old 的收集器组合进行内存回收
UseConcMarkSweepGC打开此开关后,使用 ParNew + CMS+ Serial Old 的收集器组合进行内存回收。Serial Old 收集器将作为 CMS 收集器出现 Concurrent Mode Failure失败后的后备收集器使用
UseParallelGC虚拟机运行在 Server 模式下的默认值,打开此开关后,使用 ParallelScavenge + Serial Old (PS MarkSweep)的收集器组合进行内存回收
UseParallelOldGC打开此开关后,使用 Parallel Scavenge + Parallel Old 的收集器组合进行内存回收
SurvivorRatio新生代中 Eden 区域与 Survivor 区域的容量比值,默认为8,代表Eden : Survivor=8 : 1
PretenureSizeThreshold直接晋升到老年代的对象大小,设置这个参数后,大于这个参数的对象将直接在老年代分配
MaxTenuringThreshold晋升到老年代的对象年龄。每个对象在坚持过一次 Minor GC 之后,年龄就增加 1,当超过这个参数值时就进入老年代
UseAdaptiveSizePolicy动态调整 Java 堆中各个区域的大小以及进入老年代的年龄
HandlePromotionFailure是否允许分配担保失败,即老年代的剩余空间不足以应付新生代的整个Eden 和 Survivor 区的所有对象都存活的极端情况
ParallelGCThreads

设置并行 GC 时进行内存回收的线程数

GCTimeRatio

GC 时间占总时间的比率,默认值为 99,即允许1%的 GC 时间。仅在使用 Parallel Scavenge 收集器时生效

MaxGCPauseMillis

设置 GC的最大停顿时间。仅在使用 Parallel Scavenge 收集器时生效

CMSInitiatingOccupancyFraction

设置 CMS 收集器在老年代空间被使用多少后触发垃圾收集。默认值为68%,仅在使用 CMS 收集器时生效

UseCMSCompactAtFullCollection

设置 CMS 收集器在完成垃圾收集后是否要进行一次内存碎片整理。仅在使用 CMS 收集器时生效

CMSFullGCsBeforeCompaction

设置 CMS 收集器在进行若干次垃圾收集后再启动一次内存碎片整理,仅在使用CMS 收集器时生效

五、监控和故障处理工具

名称主要作用
jpsJVM Process Status Tool,显示指定系统内所有的 HotSpot 虚拟机进程

jstat

JVM Statistics Monitoring Tool, 用于收集 HotSpot 虚拟机各方面的运行数据

jinfo

Configuration Info for Java, 显示虚拟机配置信息

jmap

Memory Map for Java, 生成虚拟机的内存转储快照(heapdump 文件)

jhat

JVM Heap Dump Browser, 用于分析 heapdump 文件,它会建立一个 HTTP/HTML 服务器,让用户可以在浏览器上查看分析结果

jstack

Stack Trace for Java, 显示虚拟机的线程快照

1、JPS工具的主要选项(jps [option] [hostid])

选项作用
-q

只输出LVMD,省略主类的名称

-m输出虚拟机进程启动时传递给主类main()函数的参数
-l输出主类的全名,如果进程执行的是Jar包,输出Jar路径
-v

输出虚拟机进程启动时JM参数

 

2、jstat工具的主要选项(jstat [ option vmid [interval [s|ms] [count]] ])

选项作用
-class监视类装载、卸载数量、总空间以及类装载所耗费的时间
-gc

监视Java堆状况,包括den区、两个 survivor I区、老年代、永久代等的容量、已用空 间、GC时间合计等信息

-gccapacit监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大、最小空间
-gcutil监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比
-gccause与- gcutil功能一样,但是会额外输出导致上一次GC产生的原因
-gcnew监视新生代GC状况
-gcnewcapacity监视内容与- gcnew基本相同,输出主要关注使用到的最大、最小空间
-gcold监视老年代GC状况
-gcoldcapacity监视内容与- gcold基本相同,输出主要关注使用到的最大、最小空间
-gcpermcapacity输出永久代使用到的最大、最小空间
-compiler输出JT编译器编译过的方法、耗时等信息
-printcompilation

输出已经被JT编译的方法

3、jmap工具的主要选项(jmap[option] vmid)

选项作用
-dump

生成Java堆转储快照。格式为:dump:iv, Iformat-b,fle- sfilename>其中live子参数说明是否只dump出存活的对象

-finalizerinfo

显示在 F-Queue中等待 Finalizer线程执行 finalize方法的对象。只 在 Linux/ Solaris平台下有效

-heap

显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等。只在 Linux/ Solaris平台下有效

-histo显示堆中对象统计信息,包括类、实例数量、合计容量
-permeat 

以 Class Loader为统计口径显示永久代内存状态。只在 Linux/ Solaris平台下有效

-F

当虚拟机进程对-dump选项没有响应时,可使用这个选项强制生成dump快照。只在 Linux/ Solaris平台下有效

 

4、jstack工具的主要选项(jstack [option] vmid)

选项作用
-F

当正常输出的请求不被响应时,强制输出线程堆栈除堆栈外

-l显示关于锁的附加信息
-m如果调用到本地方法的话,可以显示C/C++的堆栈

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值