JVM性能调试之mat

标签: jvm 性能 调试 | 发表时间:2013-03-08 18:34 | 作者:
出处:http://www.iteye.com

mat为eclipse的一个内存分析插件,帮助查找内存泄漏和减少内存消耗。

首先基于jmap导出的堆信息

jmap导出参见另一则博客

jmap -dump:live,format=b,file=test.bin 29030  

 准备代码:

对象:

class User {
	private String id;
	private String name;

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public User(String id, String name) {
		super();
		this.id = id;
		this.name = name;
	}

}

 main方法:

public static void main(String[] args) {
	List<User> list = new ArrayList<User>();
	for (int i = 1; i < 10000; i++) {
		User o = new User(i + "", System.currentTimeMillis() + "");
		list.add(o);
		o = null;
	}
	System.out.println("end");
	try {
		Thread.sleep(100000000l);
	} catch (InterruptedException e) {
		e.printStackTrace();
	}
}

 执行之后用jmap输出堆信息

然后导入分析工具

我们可以看到图形化展示:



 然后我们点击

Problem Suspect 1

如下所示:



 然后点击详情



 我们可以看到有很多的User对象



 这些对象有可能会溢出,然后我们打开OQL窗口看他是否为null,执行如下OQL语句

SELECT u FROM org.learn.util.User u WHERE (u.value = null)

 结果如下:



 也就是说这个是null,但是仍然有强引用存在,gc的时候是不能回收的,这样就会出现内存的溢出问题

 

 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [jvm 性能 调试] 推荐:

JVM性能调试之mat

- - ITeye博客
mat为eclipse的一个内存分析插件,帮助查找内存泄漏和减少内存消耗. 首先基于jmap导出的堆信息. jmap导出参见另一则博客.  执行之后用jmap输出堆信息. 我们可以看到图形化展示:.  我们可以看到有很多的User对象.  这些对象有可能会溢出,然后我们打开OQL窗口看他是否为null,执行如下OQL语句.

java 8 JVM性能优化

- - Java - 编程语言 - ITeye博客
转自:http://qindongliang.iteye.com/blog/2199633. jvm java 垃圾回收 . JVM是JAVA世界的核心,了解它有助于我们更好调试,调优和开发程序,最近散仙在看JAVA特种兵一书,看完觉得,作者写的内容还是挺不错,大家感兴趣的,也可以购买本温故而知新下.

JVM的几点性能优化

- - Java译站
HotSpot,家喻户晓的JVM,我们的Java和Scala程序就运行在它上面. 年复一年,一次又一次的迭代,经过无数工程师的不断优化,现在它的代码执行的速度和效率已经逼近本地编译的代码了. 它的核心是一个JIT(Just-In-Time)编译器. JIT只有一个目的,就是为了提升你代码的执行速度,这也是HotSpot能如此流行和成功的重要因素.

一个性能较好的jvm参数配置以及jvm的简介

- - CSDN博客推荐文章
一个性能较好的web服务器jvm参数配置:. //服务器模式 -Xmx2g //JVM最大允许分配的堆内存,按需分配 -Xms2g //JVM初始分配的堆内存,一般和Xmx配置成一样以避免每次gc后JVM重新分配内存. -Xmn和-Xmx之比大概是1:9,如果把新生代内存设置得太大会导致young gc时间较长.

JVM性能优化, Part 5:Java的伸缩性

- - 并发编程网 - ifeve.com
JVM性能优化系列文章由Eva Andearsson在javaworld上发表共计5篇文章, ImportNew上有前4篇译文. 本文(第5篇)由 吴杰翻译自: javaworld . 很多程序员在解决JVM性能问题的时候,花开了很多时间去调优应用程序级别的性能瓶颈,当你读完这本系列文章之后你会发现我可能更加系统地看待这类的问题.

Tomcat7调优及JVM性能优化for Linux环境

- - 互联网 - ITeye博客
该优化针对Linux X86_X64环境. Tomcat优化其实就是对server.xml优化(开户线程池,调整http connector参数). 搜索【

JVM 数据存储介绍及性能优化

- - 企业架构 - ITeye博客
转自http://www.ibm.com/developerworks/cn/java/j-lo-JVM-Optimize/index.html. Java 虚拟机内存模型是 Java 程序运行的基础. 为了能使 Java 应用程序正常运行,JVM 虚拟机将其内存数据分为程序计数器、虚拟机栈、本地方法栈、Java 堆和方法区等部分.

jvm 性能调优工具之 jmap - 简书

- -
命令jmap是一个多功能的命令. 它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列. pid:需要打印配置信息的进程ID. executable:产生核心dump的Java可执行文件. core:需要打印配置信息的核心文件.

JVM性能调优监控工具专题二:VisualVM基本篇之监控JVM内存,CPU,线程

- - ITeye博客
        上一个专题中讲述了JVM中自带的各种性能测试的小工具:包括jps,jstatck,jmap,jhat,jsats,hprof.         这样会造成不必要的麻烦,难道就没有一个tool可以 包括如上所有的功能. 答案是有的,自从 JDK 6 Update 7以后,提供了一全新的性能检测工具:VisualVM,VisualVM对运行中的Java应用提供了可视化的信息展示, 它是很多工具的整合包,整合了JConsole,jstat,jinfo,jstack以及jmap.

JVM 性能调优实战之:一次系统性能瓶颈的寻找过程

- - ImportNew
玩过性能优化的朋友都清楚,性能优化的关键并不在于怎么进行优化,而在于怎么找到当前系统的性能瓶颈. 性能优化分为好几个层次,比如系统层次、算法层次、代码层次…JVM 的性能优化被认为是底层优化,门槛较高,精通这种技能的人比较少. 笔者呆过几家技术力量不算弱的公司,每个公司内部真正能够进行 JVM 性能调优的人寥寥无几、甚至没有.