jvm内存查看与分析工具

转载 2013年12月04日 16:10:19

JVM标记整理收集器

2.3 JVM的垃圾收集策略
 
GC的执行时要耗费一定的CPU资源和时间的,因此在JDK1.2以后,JVM引入了分代收集的策略,其中对新生代采用"Mark-Compact"策略,而对老生代采用了“Mark-Sweep"的策略。其中新生代的垃圾收集器命名为“minor gc”,老生代的GC命名为"Full Gc 或者Major GC".其中用System.gc()强制执行的是Full Gc.

2.3.1 Serial Collector

Serial Collector是指任何时刻都只有一个线程进行垃圾收集,这种策略有一个名字“stop the whole world",它需要停止整个应用的执行。这种类型的收集器适合于单CPU的机器。

Serial Copying Collector

此种GC用-XX:UseSerialGC选项配置,它只用于新生代对象的收集。1.5.0以后。-XX:MaxTenuringThreshold来设置对象复制的次数。当eden空间不够的时候,GC会将eden的活跃对象和一个名叫From survivor空间中尚不够资格放入Old代的对象复制到另外一个名字叫To Survivor的空间。而此参数就是用来说明到底From survivor中的哪些对象不够资格,假如这个参数设置为31,那么也就是说只有对象复制31次以后才算是有资格的对象。这里需要注意几个个问题:

◆  From Survivor和To survivor的角色是不断的变化的,同一时间只有一块空间处于使用状态,这个空间就叫做From Survivor区,当复制一次后角色就发生了变化。

◆  如果复制的过程中发现To survivor空间已经满了,那么就直接复制到old generation.

◆  比较大的对象也会直接复制到Old generation,在开发中,我们应该尽量避免这种情况的发生。

Serial  Mark-Compact Collector

串行的标记-整理收集器是JDK5 update6之前默认的老生代的垃圾收集器,此收集使得内存碎片最少化,但是它需要暂停的时间比较长。

2.3.2 Parallel Collector 

Parallel Collector主要是为了应对多CPU,大数据量的环境。Parallel Collector又可以分为以下两种:

Parallel Copying Collector

此种GC用-XX:UseParNewGC参数配置,它主要用于新生代的收集,此GC可以配合CMS一起使用。1.4.1以后Parallel Mark-Compact Collector,此种GC用-XX:UseParallelOldGC参数配置,此GC主要用于老生代对象的收集。1.6.0

Parallel scavenging Collector

此种GC用-XX:UseParallelGC参数配置,它是对新生代对象的垃圾收集器,但是它不能和CMS配合使用,它适合于比较大新生代的情况,此收集器起始于jdk 1.4.0。它比较适合于对吞吐量高于暂停时间的场合,Serial gc和Parallel gc可以用如下的图来表示:

Serial gc和Parallel gc图解

2.3.3 Concurrent Collector

Concurrent Collector通过并行的方式进行垃圾收集,这样就减少了垃圾收集器收集一次的时间,这种GC在实时性要求高于吞吐量的时候比较有用。此种GC可以用参数-XX:UseConcMarkSweepGC配置,此GC主要用于老生代和Perm代的收集。

并行方式垃圾收集

JVM内存状况查看方法和分析工具

jinfo:可以输出并修改运行时的java 进程的opts。  jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。  jstat:...
  • lc0817
  • lc0817
  • 2017年02月11日 10:18
  • 1072

IDEA中一个很有用的内存调试插件

JetBrains JVM Debugger Memory View plugin 在我最近的研发活动期间寻找新的工具,以提高我的开发经验,使Android Studio的生活更轻松,我发现一个...
  • azhegps
  • azhegps
  • 2017年05月05日 13:55
  • 4420

JVM常用分析命令与工具

“报告连长:上周日投产的敌情侦测仪程序,昨晚一蟑螂进入系统摧毁了主程序导致DOWN机了。”上等兵火龙报告。 “,你们这群蠢蛋,吃啥啥不够,干啥啥不行,养你们不如养一帮娘们,敌人这些天对我们钓鱼岛虎视...
  • xufeipeng
  • xufeipeng
  • 2014年01月04日 12:38
  • 888

JVM内存状况查看方法和分析工具

Java本身提供了多种丰富的方法和工具来帮助开发人员查看和分析GC及JVM内存的状况,同时开源界和商业界也有一些工具可用于查看、分析GC及JVM内存的状况。通过这些分析,可以排查程序中内存泄露的问题及...
  • tracker_w
  • tracker_w
  • 2015年08月18日 16:22
  • 13214

JVM:内存监视手段及各区域内存溢出解决

引言本文仅关注一些常见的虚拟机内存监视手段,以及JVM运行时数据区各个部分内存溢出的发生和对应的解决方案,总体来说属于概括性总结,涉及相对不是很深入,目的是让自己和其它初学者有一个框架性、概念性的了解...
  • jiq408694711
  • jiq408694711
  • 2016年04月17日 02:36
  • 9534

JVM日志分析及工具

JVM的GC日志的主要参数包括如下几个: -XX:+PrintGC 输出GC日志 -XX:+PrintGCDetails 输出GC的详细日志 -XX:+PrintGCTimeStamps 输出G...
  • jiangguilong2000
  • jiangguilong2000
  • 2015年09月02日 18:29
  • 3189

JVM总结-内存监视手段及各区域内存溢出解决

引言 本文仅关注一些常见的虚拟机内存监视手段,以及JVM运行时数据区各个部分内存溢出的发生和对应的解决方案,总体来说属于概括性总结,涉及相对不是很深入,目的是让自己和其它初学者有一个框架性、概念...
  • xuqu_volition
  • xuqu_volition
  • 2016年12月21日 15:54
  • 1864

JVM内存设置与查看

一、设置JVM内存设置 1. 设置JVM内存的参数有四个: -Xmx    Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定; ...
  • andybbc
  • andybbc
  • 2016年01月25日 14:07
  • 1683

jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令

公司内部同事分享的一篇文章  周末看到一个用jstack查看死锁的例子。昨天晚上总结了一下jstack(查看线程)、jmap(查看内存)和jstat(性能分析)命令。供大家参考  1.Js...
  • imxiangzi
  • imxiangzi
  • 2015年07月29日 10:53
  • 23876

JVM 内存查看与分析工具

转自http://jameswxx.iteye.com/blog/731763      业界有很多强大的java profile的工具,比如Jporfiler,yourkit,这些收费的东西我...
  • tanxiang21
  • tanxiang21
  • 2014年02月17日 14:03
  • 778
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:jvm内存查看与分析工具
举报原因:
原因补充:

(最多只允许输入30个字)