【摘录】JAVA内存管理-评估垃圾收集性能的工具
第七章 评估垃圾收集性能的工具
各种各样的诊断和监视工具可以用来评估垃圾收集性能。本章简要概述他们中的几个。可以通过第九章中的“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内存管理-评估垃圾收集性能的工具的更多相关文章
- 【摘录】JAVA内存管理-JVM垃圾收集机制
		
很多公司都有自己的JVM实现,被Oracle收购的sun公司开发的JVM实现名为HotSpot.这一实现是我们最常用到的. 还有哪些JVM实现呢?比较有名的有Oracle之前收购的BEA公司(就是以前 ...
 - 【摘录】JAVA内存管理-有关垃圾收集的关键参数
		
第八章 有关垃圾收集的关键参数 一些命令行参数可以用来选择垃圾收集器,指定堆或代的大小,修改垃圾收集行为,获取垃圾收集统计数据.本章给出一些最常用的参数.有关各种各样参数更多完整的列表和详细信息可以参 ...
 - 【摘录】JAVA内存管理-自动选择垃圾收集器算法
		
在J2SE 5.0,垃圾收集的默认值:垃圾收集器.堆大小以及JVM的类型(客户端还是服务器)都会根据应用运行的硬件平台和操作系统自动选择.相比之前设置命令行参数的方式,自动选择很好的匹配了不同类型的应 ...
 - java 内存管理 —— 《Hotspot内存管理白皮书》
		
说明 要学习Java或者任意一门技术,我觉得最好的是从官网的资料开始学习.官网所给出的资料总是最权威最知道来龙去脉的.而Java中间,垃圾回收与内存管理是Java中非常重要的一部分.<Hot ...
 - Java 内存管理
		
java 内存管理机制 JAVA 内存管理总结 java 是如何管理内存的 Java 的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字 new 为 ...
 - java内存管理机制
		
JAVA 内存管理总结 1. java是如何管理内存的 Java的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字new 为每个对象申请内存空间 ( ...
 - java内存管理(堆、栈、方法区)
		
java内存管理 简介 首先我们要了解我们为什么要学习java虚拟机的内存管理,不是java的gc垃圾回收机制都帮我们释放了内存了吗?但是在写程序的过程中却也往往因为不懂内存管理而造成了一些不容易察觉 ...
 - Java内存管理-一文掌握虚拟机创建对象的秘密(九)
		
勿在流沙筑高台,出来混迟早要还的. 做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! [福利]JVM系列学习资源无套路赠送 回顾一下: 本文是接着上一篇内容:Java内存管 ...
 - Java内存管理笔记
		
java内存管理机制 在java中,内存管理由JVM完全负责,java中的"垃圾回收器"负责自动回收无用对象占据的内存资源,这样可以大大减少程序猿在内存管理上花费的时间,可以更集中 ...
 
随机推荐
- java连接AD域
			
import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.Hashtable; imp ...
 - WPF 利用RichTextBox 打印出不同颜色的文本
			
using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows ...
 - BZOJ 1725: [Usaco2006 Nov]Corn Fields牧场的安排 状压动归
			
Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地.FJ打算在牧 ...
 - timeval的时间转换成毫秒之后多大的数据类型可以装下
			
struct timeval { long tv_sec; /*秒*/ long tv_usec; /*微秒*/ }; 秒的定义为long,为了防止溢出,转换成毫秒之后保存在long long中
 - F5 datasheet
 - Apache Http Client 4 上传多个文件 (示例代码可在 github 上找到)
			
转自:http://www.baeldung.com/httpclient-multipart-upload Multipart Upload with HttpClient 4 1. Overvie ...
 - 【JavaScript框架封装】数据类型检测模块功能封装
			
数据类型检测封装后的最终模块代码如下: /*数据类型检验*/ xframe.extend(xframe, { // 鸭子类型(duck typing)如果它走起路来像鸭子,叫起来也是鸭子,那么它就是鸭 ...
 - js 操作table: insertRow(),deleteRow(),insertCell(),deleteCell()方法
			
表格有几行: var trCnt = table.rows.length; (table为Id ) 每行有几列:for (var i=0; i<trCnt; i++) ...
 - HDU1846 - Brave Game【巴什博弈】
			
十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻. 今天,大家选 ...
 - [洛谷 P2365] 任务安排 (线性dp)
			
3月14日第二题!! 题目描述 N个任务排成一个序列在一台机器上等待完成(顺序不得改变),这N个任务被分成若干批,每批包含相邻的若干任务.从时刻0开始,这些任务被分批加工,第i个任务单独完成所需的时间 ...