`

Java内存管理-监控工具篇

阅读更多

1.JConsole

 

Jconsole,Java Monitoring and Management Console。

java监控和管理控制台,从java5开始,在JDK中提供。

用于对JVM中内存,线程、类和虚拟机的运行情况等的监控。提供了本地监控和远程监控两种功能。

 

 

 

 

2.jps

 

[root@host bin]# ./jps

17515 Standalone
1487 Jps

 

 

 

3.jmap

 

jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。使用方法 jmap -histo pid。如果连用 SHELL jmap -histo pid > a.log可以将其保存到文本中去(windows下也可以使用),在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap -dump:format=b,file=f1 3024可以将3024进程的内存heap输出出来到f1文件里。 

 

jmap的常用命令:

 

3.1 jmap -finalizerinfo JVM的进程号

这个表示有多少对象正在finalization队列中,等待finalizer thread进行finalizer,对于finalizer的原理,请参考我的博客文章OutOfMemory总汇

例如:

 

[root@tomy tomcat] # /usr/java/latest/bin/jmap -finalizerinfo  25757
Attaching to process ID 25757, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 14.0-b16
Number of objects pending for finalization: 0

 

3.2 jmap -heap JVM的进程号

打印堆的使用情况,以及GC采用什么垃圾回收器

例如:

 

[root@labs-dev01 tomcat]# /usr/java/latest/bin/jmap -heap  25757
Attaching to process ID 25757, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 14.0-b16

using thread-local object allocation.
Parallel GC with 2 thread(s)

Heap Configuration:
   MinHeapFreeRatio = 40
   MaxHeapFreeRatio = 70
   MaxHeapSize      = 402653184 (384.0MB)
   NewSize          = 1048576 (1.0MB)
   MaxNewSize       = 4294901760 (4095.9375MB)
   OldSize          = 4194304 (4.0MB)
   NewRatio         = 8
   SurvivorRatio    = 8
   PermSize         = 16777216 (16.0MB)
   MaxPermSize      = 67108864 (64.0MB)

Heap Usage:
PS Young Generation
Eden Space:
   capacity = 42598400 (40.625MB)
   used     = 21145576 (20.165992736816406MB)
   free     = 21452824 (20.459007263183594MB)
   49.63936673677885% used
From Space:
   capacity = 1048576 (1.0MB)
   used     = 652736 (0.62249755859375MB)
   free     = 395840 (0.37750244140625MB)
   62.249755859375% used
To Space:
   capacity = 1048576 (1.0MB)
   used     = 0 (0.0MB)
   free     = 1048576 (1.0MB)
   0.0% used
PS Old Generation
   capacity = 357957632 (341.375MB)
   used     = 23543768 (22.453086853027344MB)
   free     = 334413864 (318.92191314697266MB)
   6.577249902021924% used
PS Perm Generation
   capacity = 24903680 (23.75MB)
   used     = 24817640 (23.667945861816406MB)
   free     = 86040 (0.08205413818359375MB)
   99.65450889185855% used

 

3.3 jmap -dump:file=<fileName> JVM的进程号(java5版本不支持这个参数)

[root@labs-dev01 tomcat]# /usr/java/latest/bin/jmap -dump:file=heap.bin  -F 25757

Attaching to process ID 25757, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 14.0-b16
Dumping heap to mashup ...
Finding object size using Printezis bits and skipping over...
Finding object size using Printezis bits and skipping over...
Finding object size using Printezis bits and skipping over...
Finding object size using Printezis bits and skipping over...
Finding object size using Printezis bits and skipping over...
Finding object size using Printezis bits and skipping over...
Finding object size using Printezis bits and skipping over...
Finding object size using Printezis bits and skipping over...
Finding object size using Printezis bits and skipping over...
Finding object size using Printezis bits and skipping over...
Heap dump file created

 

dump下来的二进制文件,需要用专门的工具进行查看,sun提供了jhat工具进行查看:

[root@tomy tomcat]# /usr/java/latest/bin/jhat heap.bin
Reading from heap.bin...
Dump file created Wed Apr 14 08:57:06 GMT+00:00 2010
Snapshot read, resolving...
Resolving 443412 objects...
Chasing references, expect 88 dots........................................................................................
Eliminating duplicate references........................................................................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

 

由上面可以看到,jhat查看器,是启动了7000端口,让客户端可以通过web方式进行查看,dump出来的内容包含:

1)所有在内存中的类信息

2)所有类的实例数目

3)GC的root set

 

客户端可以通过浏览器访问http://ip:7000就可以访问到heap里面的内容了。

 

 

 

 

 

 

 

 

 

 

  • 大小: 61.5 KB
分享到:
评论

相关推荐

    JAVA内存分析 - V1.0.0.zip

    "JAVA内存分析 - V1.0.0.zip" 提供了一套工具来帮助开发者深入理解并优化Java应用程序的内存使用情况。这个压缩包包含了两个关键文件:"jdk-8.gz" 和 "mat"。 "jdk-8.gz" 是Java Development Kit(JDK)的8版的压缩...

    java-sizeof-0.0.4:一个查看java对象占用内存大小

    在Java中,理解和管理内存是优化程序性能的关键因素之一。本文将深入探讨Java中的对象内存占用,以及如何使用"java-sizeof-0.0.4"工具来查看Java对象在内存中的大小。 在Java中,内存主要分为堆内存(Heap)和栈...

    Java内存监控工具Java VisualVM

    ### Java内存监控工具Java VisualVM #### 一、概述 Java VisualVM是一款强大的Java应用程序性能分析和诊断工具,主要用于监控和分析Java应用的运行时行为,包括但不限于内存使用情况、线程状态、CPU使用率等关键...

    Sun JDK 1.6内存管理--调优篇

    《Sun JDK 1.6内存管理--调优篇》深入探讨了Java开发中的关键环节——JVM内存管理和性能优化。Sun JDK 1.6作为早期的Java开发环境,其内存管理机制对于理解现代JVM的工作原理至关重要。本文将详细解析JVM内存结构,...

    Sun_JDK_1.6内存管理--实现篇-毕玄

    标题与描述中的关键词“Sun_JDK_1.6内存管理--实现篇”指向了Java虚拟机(JVM)中Sun JDK 1.6版本的内存管理机制及其具体实现细节。在这一部分,我们将会深入探讨Sun JDK 1.6如何处理内存分配、垃圾收集以及其他优化...

    java-1.8.0-openjdk.linux.x86_64

    此外,OpenJDK 1.8.0 还支持JMX(Java Management Extensions)和JFR(Java Flight Recorder),它们是用于监控和诊断Java应用程序的工具。JMX允许管理和监控各种Java应用程序的资源,而JFR则提供了一种低开销的方式...

    亲测可用java-1.8.0-openjdk.linux.x86_64.zip

    4. **其他开发工具**:OpenJDK 1.8.0还包括其他的开发工具,如`jmap`用于内存映射,`jhat`用于分析堆转储,`jinfo`获取Java配置信息,`jstack`用于查看线程堆栈跟踪,以及`jconsole`图形化监控工具等。这些工具对于...

    java-8-openjdk-amd64.tar.gz

    它包含了JRE(Java运行环境)和JDK,JRE用于运行Java程序,而JDK则包含JRE以及用于编译、调试和监控Java应用的工具。 在AMD64架构上使用OpenJDK 8的优点包括: 1. **64位性能**:相比于32位版本,64位JVM可以访问...

    Java内存泄露_JVM监控工具介绍

    "Java内存泄露_JVM监控工具介绍" Java内存泄露是Java开发中常见的一种问题,发生内存泄露可能会导致Java应用程序崩溃或性能下降。在Java中,内存泄露的原因非常多样,例如,静态变量、循环引用、数据库连接池、...

    Sun JDK 1.6内存管理--调优篇-毕玄

    《Sun JDK 1.6内存管理—调优篇》由毕玄撰写,旨在深入探讨Java虚拟机(JVM)在Sun JDK 1.6版本下的内存管理与优化策略。本文将详细解读该文中的核心知识点,包括GC调优的基本技巧、编写对GC友好的代码方法,以及...

    android应用内存监控工具

    内存监控工具能够帮助开发者检测和分析应用的内存使用情况,预防和解决内存泄漏等问题。"Emmagee.apk"可能是一个专用于Android设备的内存监控应用,它允许用户直接在手机上查看和分析内存使用状况。 一、Android...

    java内存泄漏分析工具

    本篇将详细探讨Java内存泄漏及其相关的分析工具。 内存泄漏是指程序在申请内存后,无法释放已不再使用的内存空间。在Java中,由于垃圾收集器的存在,程序员通常不必手动管理内存。然而,如果存在某些情况使得对象...

    java-7-openjdk-arm64-aarch64.tar.gz

    这个压缩包包含了OpenJDK 7的实现,OpenJDK是一个开源版本的Java开发工具包,它提供了Java虚拟机(JVM)以及Java编程语言的编译器和其他基础工具。ARM64,也被称为AArch64,是ARM架构的一个64位变体,广泛应用于...

    java-sdk-4.11.0.jar.zip

    3. **Java开发工具**(JDK工具):如`jar`命令用于创建、管理和提取JAR文件,`javadoc`用于生成API文档,`jmap`和`jhat`用于内存分析,以及`jconsole`用于监控Java应用的性能等。 4. **Java API**:这是一个庞大的...

    JDK14-java-se-monitoring-and-management-guide.pdf

    * Java Mission Control:一个图形化的监控工具,提供了对 Java 应用程序的性能、内存使用情况、线程状态等方面的实时监控。 * Java Flight Recorder:一个低 overhead 的监控工具,提供了对 Java 应用程序的性能、...

    Java 服务器信息监控

    Java作为一种跨平台的语言,为开发服务器监控工具提供了便利。在"Java 服务器信息监控"项目中,开发者可以编写代码来获取不同操作系统(如Windows、Linux)下的系统资源信息。这些信息包括但不限于CPU利用率、内存...

    JavaMelody JAVA Web项目服务器性能监控工具

    JavaMelody是一款强大的JAVA Web项目服务器性能监控工具,它能够实时、全面地监控应用程序的运行状态,帮助开发者和运维人员了解系统性能瓶颈,及时发现并解决问题。通过在Java Web应用中简单集成,JavaMelody就能...

    ibm-java-堆内存分析工具-heapanalyzer

    - **Java内存模型**:包括堆内存、栈内存、方法区、本地方法栈和程序计数器等部分。 - **垃圾回收(GC)原理**:了解如何自动回收不再使用的对象,以及不同垃圾收集器的工作机制。 - **内存泄漏**:理解内存泄漏...

    java内存泄露、溢出检查方法和工具

    Java内存管理是开发Java应用程序时的关键环节,内存泄露和溢出问题可能导致系统性能下降,甚至导致服务崩溃。本文将深入探讨如何检测和分析Java内存泄露与溢出,并介绍一种常用的工具——Memory Analyzer(MAT)。 ...

Global site tag (gtag.js) - Google Analytics