- 浏览: 525406 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (161)
- 多线程与并发编程 (20)
- 算法和数据结构 (8)
- 缓存 (0)
- HttpClient (2)
- 疑难杂症 (11)
- Java内存管理 (17)
- 分布式开发 (14)
- Linux常用命令 (10)
- OSGI (0)
- UML (2)
- 趣味面试题 (5)
- 设计模式 (8)
- Java类加载 (2)
- JSTL (1)
- Web 服务器 (4)
- IT人生 (3)
- Java基础 (11)
- Flash技术 (7)
- 新知识 (3)
- 常用速备速查 (4)
- 版本控制 (1)
- Java集合工具类 (6)
- web前端技术 (1)
- 趣味话题 (1)
- 安全 (0)
- 架构设计 (5)
- Spring (4)
- 负载均衡技术 (2)
- 持久层技术 (2)
- MySQL单机多实例方案 (1)
- 收藏备用 (0)
- 性能优化 (3)
最新评论
-
liuwuhen:
...
Pushlet的工作原理 -
fbwfbi:
fengchuizhuming 写道楼主的完全正确。鉴定完毕楼 ...
硬件同步原语(CAS)理论 -
passerby_whu:
uule 写道这个测试后结果为:“testPageConten ...
FutureTask的使用方法和使用实例 -
fengchuizhuming:
楼主的完全正确。鉴定完毕
硬件同步原语(CAS)理论 -
edwardjuice:
FutureTask的使用方法和使用实例
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里面的内容了。
发表评论
-
JVM四种对象引用类型
2011-05-17 16:27 1589JVM 中将对象的引用分为了四种类型,不同的对象引用类型会造成 ... -
Garbage First - Card Table
2011-05-12 17:36 1516之前一直以为只是在Garbage First垃圾回收器中,有C ... -
Red5 0.7和0.9 版本配置远程JConsole监控
2010-12-12 16:23 2542JConsole可以帮助你监控虚拟机的状态,垃圾回收的时间,调 ... -
Java内存Dump文件查看和分析工具介绍
2010-12-06 16:51 15605为了查red5-0.7.0的内存泄露问题,由于dump文件太大 ... -
深入垃圾收集器与内存分配策略
2010-11-05 15:45 1421Java与C++之间有一堵由 ... -
实战OutOfMemoryError(转)
2010-11-05 15:41 1797实战 OutOfMemoryError 上述区域中 ... -
JVM 运行时区域划分(转载)
2010-11-05 15:39 1611VM 运行时数据区域 JVM 执行 Java ... -
使用jconsole远程监控linux下tomcat使用情况
2010-10-26 09:11 3704启动tomcat/bin/startup.sh中增加一下变量: ... -
Eclipse经常出现OutOfMemory错误,如何解决
2010-04-15 16:59 23111今天有个同事问我一个问题,他的Eclipse经常出现OutOf ... -
Java内存泄露示例代码总汇
2010-04-09 13:57 3595Java尽管采用自动的内存 ... -
HotSpot VM - OutOfMemory Error 总汇
2010-04-06 16:02 2246OutOfMemory Error表明Java 堆没有足够的内 ... -
Java内存管理-Permanent Space
2010-03-10 13:21 5023VM 的Permanent generation space, ... -
JVM -Server -Client 模式
2010-03-10 09:39 2797JVM -Server 与 -Client启动,最主要的差别在 ... -
Java 5 版本以上(SUN JVM)GC参数化调整大全
2010-03-08 16:37 2857今天终于有所斩获,发现了Sun Hotspot JVM GC最 ... -
Java内存管理基础篇 - Java内存回收-常见的垃圾回收策略
2010-03-08 16:33 1756Java的内存使用完之后,是通过JVM的GC进行回收的。 ... -
Java内存管理基础篇 - Java内存分配
2010-03-04 22:19 29961.简介 现摘录一段Java5内存管理白皮书中的 ...
相关推荐
"JAVA内存分析 - V1.0.0.zip" 提供了一套工具来帮助开发者深入理解并优化Java应用程序的内存使用情况。这个压缩包包含了两个关键文件:"jdk-8.gz" 和 "mat"。 "jdk-8.gz" 是Java Development Kit(JDK)的8版的压缩...
在Java中,理解和管理内存是优化程序性能的关键因素之一。本文将深入探讨Java中的对象内存占用,以及如何使用"java-sizeof-0.0.4"工具来查看Java对象在内存中的大小。 在Java中,内存主要分为堆内存(Heap)和栈...
### Java内存监控工具Java VisualVM #### 一、概述 Java VisualVM是一款强大的Java应用程序性能分析和诊断工具,主要用于监控和分析Java应用的运行时行为,包括但不限于内存使用情况、线程状态、CPU使用率等关键...
《Sun JDK 1.6内存管理--调优篇》深入探讨了Java开发中的关键环节——JVM内存管理和性能优化。Sun JDK 1.6作为早期的Java开发环境,其内存管理机制对于理解现代JVM的工作原理至关重要。本文将详细解析JVM内存结构,...
标题与描述中的关键词“Sun_JDK_1.6内存管理--实现篇”指向了Java虚拟机(JVM)中Sun JDK 1.6版本的内存管理机制及其具体实现细节。在这一部分,我们将会深入探讨Sun JDK 1.6如何处理内存分配、垃圾收集以及其他优化...
此外,OpenJDK 1.8.0 还支持JMX(Java Management Extensions)和JFR(Java Flight Recorder),它们是用于监控和诊断Java应用程序的工具。JMX允许管理和监控各种Java应用程序的资源,而JFR则提供了一种低开销的方式...
4. **其他开发工具**:OpenJDK 1.8.0还包括其他的开发工具,如`jmap`用于内存映射,`jhat`用于分析堆转储,`jinfo`获取Java配置信息,`jstack`用于查看线程堆栈跟踪,以及`jconsole`图形化监控工具等。这些工具对于...
它包含了JRE(Java运行环境)和JDK,JRE用于运行Java程序,而JDK则包含JRE以及用于编译、调试和监控Java应用的工具。 在AMD64架构上使用OpenJDK 8的优点包括: 1. **64位性能**:相比于32位版本,64位JVM可以访问...
"Java内存泄露_JVM监控工具介绍" Java内存泄露是Java开发中常见的一种问题,发生内存泄露可能会导致Java应用程序崩溃或性能下降。在Java中,内存泄露的原因非常多样,例如,静态变量、循环引用、数据库连接池、...
《Sun JDK 1.6内存管理—调优篇》由毕玄撰写,旨在深入探讨Java虚拟机(JVM)在Sun JDK 1.6版本下的内存管理与优化策略。本文将详细解读该文中的核心知识点,包括GC调优的基本技巧、编写对GC友好的代码方法,以及...
内存监控工具能够帮助开发者检测和分析应用的内存使用情况,预防和解决内存泄漏等问题。"Emmagee.apk"可能是一个专用于Android设备的内存监控应用,它允许用户直接在手机上查看和分析内存使用状况。 一、Android...
本篇将详细探讨Java内存泄漏及其相关的分析工具。 内存泄漏是指程序在申请内存后,无法释放已不再使用的内存空间。在Java中,由于垃圾收集器的存在,程序员通常不必手动管理内存。然而,如果存在某些情况使得对象...
这个压缩包包含了OpenJDK 7的实现,OpenJDK是一个开源版本的Java开发工具包,它提供了Java虚拟机(JVM)以及Java编程语言的编译器和其他基础工具。ARM64,也被称为AArch64,是ARM架构的一个64位变体,广泛应用于...
3. **Java开发工具**(JDK工具):如`jar`命令用于创建、管理和提取JAR文件,`javadoc`用于生成API文档,`jmap`和`jhat`用于内存分析,以及`jconsole`用于监控Java应用的性能等。 4. **Java API**:这是一个庞大的...
* Java Mission Control:一个图形化的监控工具,提供了对 Java 应用程序的性能、内存使用情况、线程状态等方面的实时监控。 * Java Flight Recorder:一个低 overhead 的监控工具,提供了对 Java 应用程序的性能、...
Java作为一种跨平台的语言,为开发服务器监控工具提供了便利。在"Java 服务器信息监控"项目中,开发者可以编写代码来获取不同操作系统(如Windows、Linux)下的系统资源信息。这些信息包括但不限于CPU利用率、内存...
JavaMelody是一款强大的JAVA Web项目服务器性能监控工具,它能够实时、全面地监控应用程序的运行状态,帮助开发者和运维人员了解系统性能瓶颈,及时发现并解决问题。通过在Java Web应用中简单集成,JavaMelody就能...
- **Java内存模型**:包括堆内存、栈内存、方法区、本地方法栈和程序计数器等部分。 - **垃圾回收(GC)原理**:了解如何自动回收不再使用的对象,以及不同垃圾收集器的工作机制。 - **内存泄漏**:理解内存泄漏...
Java内存管理是开发Java应用程序时的关键环节,内存泄露和溢出问题可能导致系统性能下降,甚至导致服务崩溃。本文将深入探讨如何检测和分析Java内存泄露与溢出,并介绍一种常用的工具——Memory Analyzer(MAT)。 ...