第七章 评估垃圾收集性能的工具

各种各样的诊断和监视工具可以用来评估垃圾收集性能。本章简要概述他们中的几个。可以通过第九章中的“Tools and Troubleshooting”链接获得更多的信息。

命令行参数 –XX:+PrintGCDetails

获取垃圾收集初始信息最简单的方法之一是指定这个命令行参数 –XX:+PrintGCDetails。对于每一次收集,形如这样的信息都会在输出的结果中:垃圾收集前后每个不同代活动对象的大小,每个代可用的空间以及垃圾收集消耗的时间。

命令行参数 –XX:+PrintGCTimeStamps

当使用了–XX:+PrintGCDetails参数后,除了上述输出外,这个参数在每次垃圾收集开始时输出一个时间戳。时间戳有助于帮助你将垃圾收集日志与其他日志时间关联起来。

jmap

jmap 是一个包含在Solaris™操作系统环境和Linux(但不支持Windows)的JDK中的工具(译注:这篇文章说的JDK5时代,在JDK6的Windows版本中已经支持了)。这个工具打印关于一个运行着的JVM或core文件内存相关的统计信息。当没有附加任何命令参数时,它打印加载的共享对象列表,很接近Solaris系统中pmap工具的输出。对于更具体的信息,这些参数可以使用:-heap、-histo和–permstat。

-heap用于获取如下信息:垃圾收集器的名称、具体算法的细节(例如并行垃圾收集的线程数)、堆的配置信息、堆的使用信息的摘要。

-histo用于获取关于类的堆的直方图。对于每个类,打印其在堆中实例的个数,这些对象消耗的内存总量的字节数和类的全限定名。直方图对于了解堆是如何使用的非常有用。

对于动态产生和加载大量类的应用(例如JSP、web容器)来说配置持久代的大小非常重要。如果应用加载了“太多”的类将发生OutOfMemoryError错误。jmap 的 –permstat 参数可以用来获取持久代对象的统计信息。

jstat

jstat 使用HotSpot JVM内建的方式提供运行中的应用的性能和资源消耗信息。但诊断性能问题时可以使用这个工具,特别是当问题与堆大小和垃圾收集相关时。它的许多选项能够打印垃圾收集行为和性能的统计数据和各代的用量。

HPROF: 堆分析器

HPROF是JDK5.0提供的一个简单的分析器代理。它是一个使用JVM TI接口链接到JVM的动态链接库。它使用ASCII和二进制格式输出特征信息到文件或socket。这些信息未来可以用前端工具分析。

HPROF能够呈现CPU使用率、堆分配统计和锁争用特征。另外,它可以输出完整的heap dump并且报告JVM中所有线程和锁的状态。当分析性能、锁争用、内存泄露等问题时,HPROF非常有用。参见第九章HPROF文档的链接。

HAT: 堆分析工具(Heap Analysis Tool)

堆分析工具(HAT)帮助分析无意识的对象持有(unintentional object retention)。这个术语是用来描述一个对象不再需要,但由于存在某个活动对象到它的引用路径仍然存活。HAT基于HPROF产生的堆快照提供了一个非常方便的方法浏览对象拓扑。这个工具支持很多查询,包括“显示所有从根集合到这个对象的引用路径”。参见第九章HAT文档的链接。

【摘录】JAVA内存管理-评估垃圾收集性能的工具的更多相关文章

  1. 【摘录】JAVA内存管理-JVM垃圾收集机制

    很多公司都有自己的JVM实现,被Oracle收购的sun公司开发的JVM实现名为HotSpot.这一实现是我们最常用到的. 还有哪些JVM实现呢?比较有名的有Oracle之前收购的BEA公司(就是以前 ...

  2. 【摘录】JAVA内存管理-有关垃圾收集的关键参数

    第八章 有关垃圾收集的关键参数 一些命令行参数可以用来选择垃圾收集器,指定堆或代的大小,修改垃圾收集行为,获取垃圾收集统计数据.本章给出一些最常用的参数.有关各种各样参数更多完整的列表和详细信息可以参 ...

  3. 【摘录】JAVA内存管理-自动选择垃圾收集器算法

    在J2SE 5.0,垃圾收集的默认值:垃圾收集器.堆大小以及JVM的类型(客户端还是服务器)都会根据应用运行的硬件平台和操作系统自动选择.相比之前设置命令行参数的方式,自动选择很好的匹配了不同类型的应 ...

  4. java 内存管理 —— 《Hotspot内存管理白皮书》

    说明   要学习Java或者任意一门技术,我觉得最好的是从官网的资料开始学习.官网所给出的资料总是最权威最知道来龙去脉的.而Java中间,垃圾回收与内存管理是Java中非常重要的一部分.<Hot ...

  5. Java 内存管理

    java 内存管理机制 JAVA 内存管理总结 java 是如何管理内存的 Java 的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字 new 为 ...

  6. java内存管理机制

    JAVA 内存管理总结 1. java是如何管理内存的 Java的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 ( ...

  7. java内存管理(堆、栈、方法区)

    java内存管理 简介 首先我们要了解我们为什么要学习java虚拟机的内存管理,不是java的gc垃圾回收机制都帮我们释放了内存了吗?但是在写程序的过程中却也往往因为不懂内存管理而造成了一些不容易察觉 ...

  8. Java内存管理-一文掌握虚拟机创建对象的秘密(九)

    勿在流沙筑高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! [福利]JVM系列学习资源无套路赠送 回顾一下: 本文是接着上一篇内容:Java内存管 ...

  9. Java内存管理笔记

    java内存管理机制 在java中,内存管理由JVM完全负责,java中的"垃圾回收器"负责自动回收无用对象占据的内存资源,这样可以大大减少程序猿在内存管理上花费的时间,可以更集中 ...

随机推荐

  1. vj线段树专题

    vj线段树专题题解 单点更新模板 void build(int x,int l,int r){//sum[x]控制l-r区域 if(l==r){Sum[x]=num[l];return ;} int ...

  2. Javascript解析URL

    举个栗子,一个网页的URL为https://i.cnblogs.com/EditPosts.aspx?opt=1,要分离出通信协议.host.port.path.query.hash等值.这时候我们应 ...

  3. LIS,LCS,LICS 学习笔记

    1.最长上升子序列(LIS) 子序列: 1.可以不连续 2.相对位置不变 dp[i][j] 表示前i位置,最大值为j的LIS长度 1. dp[i-1][j] 前i-1位置,最大值为j的LIS长度 (没 ...

  4. Windows环境下制作Ubuntu的U盘启动工具

    Windows用户想要尝试一下Ubuntu或其他Linux系统?最简单的方法就是使用VMware Workstation,只是虚拟机会真实占用内存,如果你的电脑内存8G及以上可以试试.内存偏小,或者觉 ...

  5. java并发之阻塞队列

    在前面我们接触的队列都是非阻塞队列,比如PriorityQueue.LinkedList(LinkedList是双向链表,它实现了Dequeue接口). 阻塞队列与普通队列的区别在于:当队列是空的时, ...

  6. Could not publish server configuration for Tomcat v7.0 Server at localhost. Multiple Contexts have a path of "/ezoutdoor".

    Could not publish server configuration for Tomcat v7.0 Server at localhost. Multiple Contexts have a ...

  7. zTree 无子节点 单击事件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  8. HelloWorld编译正常运行报noclassdeffounderror

    修改环境变量classpath: 原理: classpath是搜索java类库的路径:当你输入命令“java HelloWorld“时,会根据classpath寻找HelloWorld.class:一 ...

  9. asp.net mvc--传值-前台->后台

    前端传值->后端 一.Model Binding 方式 前台 @model ADMgr.Web.Models.ListModel 后台 [HttpPost] public ActionResul ...

  10. codevs——T1044 拦截导弹 || 洛谷——P1020 导弹拦截

    http://codevs.cn/problem/1044/ || https://www.luogu.org/problem/show?pid=1020#sub 时间限制: 1 s  空间限制: 1 ...