`
小网客
  • 浏览: 1241601 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JVM性能调试之mat

    博客分类:
  • Java
 
阅读更多

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的时候是不能回收的,这样就会出现内存的溢出问题

 

 

 

  • 大小: 16.8 KB
  • 大小: 15.5 KB
  • 大小: 51.6 KB
  • 大小: 64.1 KB
  • 大小: 25.1 KB
0
0
分享到:
评论

相关推荐

    (二)MATJVM 内存分析工具.MAT JVM 内存分析工具.MAT JVM 内存分析工具.

    总的来说,MAT JVM内存分析工具是Java开发者不可或缺的调试工具,它能有效地帮助我们找到并解决内存问题,提高应用程序的稳定性和效率。通过深入理解和熟练使用MAT,开发者可以更好地管理和优化Java应用的内存资源。

    MAT JVM 内存分析工具.

    MAT,全称Memory Analyzer Tool,是IBM开发的一款强大的Java虚拟机(JVM)内存分析工具。...通过理解MAT的这些特性,开发者可以更有效地调试和优化Java应用程序,确保其在运行时能高效且稳定地使用内存。

    jvm工具、参数调优&调试技巧(补充+修正版)

    本文将深入探讨JVM的工具、参数调优以及调试技巧,旨在帮助开发者提升应用性能,减少系统故障。 一、JVM工具 1. JVisualVM:集成在JDK中的多合一工具,可以提供内存分析、线程监控、CPU剖析等功能,方便开发者实时...

    jvm工具、参数调优&调试技巧

    ### JVM工具、参数调优与调试技巧 #### 一、JVM工具 ##### 1. jps:虚拟机进程状况工具 - **简介**:`jps` 是一个用于显示当前运行的所有Java虚拟机进程(JVMs)的简单工具。它会列出每个JVM的PID(进程ID)以及...

    实战Java虚拟机 JVM故障诊断与性能优化 葛一鸣

    4. **性能优化**:JVM性能优化主要包括内存优化、线程优化、代码优化和JVM参数调整。例如,合理设置堆大小、新生代与老年代的比例,选择合适的GC策略,避免死锁和竞态条件,以及利用JDK工具(如JVisualVM、JProfiler...

    2024年java面试题-jvm性能调优面试题第二部分

    ### 2024年Java面试题:JVM性能调优面试题第二部分 #### 内存模型及分区 在Java虚拟机(JVM)中,内存主要被划分为以下几个区域: 1. **堆区(Heap)**:堆区是用于存储初始化的对象、成员变量等数据的地方。所有对象...

    jvm工具、参数调优&调试技巧.doc

    2. **jstat(Java Virtual Machine Statistics Monitoring tool)**:提供对JVM各种运行时统计数据的实时监控,包括垃圾收集器状态、类装载情况、JVM内存使用等,帮助开发者评估JVM性能。 3. **jinfo...

    深入JVM内核 - 原理、诊断与优化

    目前,Java是最为流行的编程语言之一,它的基础平台就是JVM。除了Java,如JRuby、Scala、Clojure等语言也运行在JVM平台。熟悉和掌握JVM平台有着重要的实用价值和意义。 在本课程中个,将详细介绍JVM的基本原理、...

    性能分析工具之-- Memory Analyzer Tool(MAT)

    内存分析是Java应用程序性能优化的关键环节,而Memory Analyzer Tool(MAT)正是这样一个强大的工具,...通过熟练掌握MAT,开发者可以更有效地调试和优化他们的Java应用程序,避免因内存问题导致的性能瓶颈和系统崩溃。

    笔记-JVM三期.pdf

    Java虚拟机(JVM)是Java程序的核心组成部分,它为Java...总的来说,理解JVM的工作原理、内存管理、性能优化以及其在跨平台和跨语言方面的角色,对于Java开发者来说至关重要,这有助于编写出更高效、稳定的应用程序。

    33、JVM探究.pdf

    例如,了解JVM内部机制,能更快地调试和优化程序,处理运行时错误,如StackOverflowError和OOM。 总之,JVM是一个复杂且关键的领域,深入学习可以帮助Java开发者更好地理解和控制程序的运行。无论是面试还是实际...

    JVM_调优基础(中英文对照版)

    垃圾回收(Garbage Collection, GC)是JVM自动管理内存的重要机制,不同的垃圾回收策略会影响程序的性能表现。了解GC的工作原理和策略选择对于JVM调优至关重要。 1. **串行回收**:适用于单核处理器或轻负载场景,...

    深入JVM内核—原理、诊断与优化

    - **性能调试相关参数**: - `-verbose:gc`:输出详细的垃圾收集日志。 - `-XX:+PrintGCDetails`:打印更详细的GC信息。 #### 4. 算法和种类 JVM中涉及多种算法和技术,例如: - **垃圾回收算法**:包括标记-清除...

    jvm 调优笔记-jvm.zip

    4. **JVM性能监控与诊断工具** - **JConsole**:提供图形化界面,监控JVM运行状态,包括内存、线程、类加载等信息。 - **VisualVM**:更强大的多合一工具,包含CPU、内存、线程分析,还可以导出性能数据。 - **...

    eclipse MAT 内存分析工具

    Eclipse Memory Analyzer (MAT) 是一个强大的内存分析工具,尤其对于Java开发者来说,它是一个不可或缺的调试利器。MAT主要用于诊断Java应用程序的内存泄漏问题,帮助优化内存使用效率。这款工具由Eclipse基金会开发...

    最新版mat java内存分析工具

    MAT,全称Memory Analyzer Tool,是IBM开发的一款强大的Java...总之,MAT作为Java内存分析的利器,对于优化和调试Java应用程序的内存管理具有不可忽视的价值。开发者应熟练掌握其使用方法,以提升应用的质量和稳定性。

    mat.app.zip

    MAT(Memory Analyzer Tool)是Eclipse基金会开发的...通过上述功能,开发者可以有效地调试和优化Java应用,提高其性能和稳定性。在日常的开发和维护工作中,掌握MAT的使用技巧对于解决复杂的内存问题是非常有帮助的。

    面试官常问的JVM面试题

    - **jconsole**:GUI工具,监控JVM性能和内存状态。 - **jhat**:分析堆转储文件,找出内存泄漏等问题。 - **MAT(Memory Analyzer Tool)**:Eclipse插件,用于深入分析内存泄漏。 10. **类加载过程** - **...

Global site tag (gtag.js) - Google Analytics