Java虚拟机(JVM)及垃圾收集器(GC)负责管理大多数的内存任务,但是Java应用系统中还是有可能出现内存泄漏。事实上,OOM之类的现象在大型项目中也是一个常见的问题。避免内存泄漏的第一步是要弄清楚它是如何发生的,然后对症下药。
那究竟是什么导致了 Java 程序中的内存泄漏呢?难道 Java 虚拟机的垃圾收集器不应该管理未使用的内存吗?是的,它会进行管理,但是垃圾收集的对象只能是不再被引用的对象。但是,某些不再需要的对象,却在系统的某个地方仍在引用它,这样就不能对这些对象进行垃圾收集,在日志中的大量String对象的生成以及编写Java代码时的一些常见的内存泄漏陷阱等等都会造成内存泄漏,但是要在开发阶段完成找出造成泄漏的代码是非常困难的。
在大型企业系统中,Java代码中的内存泄漏是常见而且难于解决的问题。这些泄漏问题通常是在最不愿意它发生的正式生产环境中发现的,而且它也很难于在开发与测试环境中得到重现。这是为什么呢?生产环境中的系统需要处理更大量的数据,而且有可能在运行很长时间后才会发现 Java堆在缓慢地增长。最终,导致系统内存耗尽。
因此本文介绍一种新工具BEA JRockit Mission Control,用来诊断泄漏并指出根本原因。该工具的开销非常小,因此可以使用它来寻找生产环境中的系统的内存泄漏。
简介
BEA JRockit Mission Control(以下简称为JRMC)于2005年12月面世,并从JRockit R26.0.0版本开始捆绑了这个工具套件,目前最新的版本是2.0.1。它是一组以极低的开销来监控、管理和分析生产环境中的应用程序的工具。它包括三个独立的应用程序:内存泄漏监测器(Memory Leak Detector)、JVM运行时分析器(Runtime Analyzer)和管理控制台(Management Console)。
JRockit Management Console
JRockit Management Console是一个基于JMX的控制台,用于监控和管理多个JRockit实例,提供至关重要的状态数据和控制JRockit JVM的运行时特性的方法。它捕获并显示关于垃圾收集器(GC)暂停、内存、堆使用和CPU负载的实时数据,以及部署在JVM内部MBean服务器上注册的所有JMX MBean所公开的信息。JVM管理包括对CPU相似性、垃圾收集策略和内存池大小的动态控制,还包括一个开销低的方法分析器和一个异常计数器。
JRockit Runtime Analyzer
JRockit Runtime Analyzer(JRA)是一个JVM分析器,是一个随需应变的“动态记录器”Java应用程序,它记录了Java应用程序和JVM在一段预定的时间内的详细记录。然后通过JRA应用程序对记录下来的文件进行离线分析。所记录的数据包括对方法的调用跟踪、错误的同步、锁定的分析,还有垃圾收集统计信息,优化决策以及对象统计信息和其他重要的应用程序/JVM行为。它的目的是让JRockit开发人员能够找到良好的方法来基于现实应用程序优化JVM,对于帮助客户在生产和开发环境中解决问题十分有用。
JRA由两个部分组成:JVM中的记录引擎和可以用于分析结果记录的GUI应用程序。记录引擎使用的信息源有几种,包括JRockit Hot Spot Detector(优化引擎也使用它来决定应该优化哪些方法)、操作系统、JRockit Memory System(最出名的就是垃圾收集器)和JRockit锁定分析器(如果支持的话)。
JRockit Memory Leak Detector
虽然Java的自动内存管理机制把开发人员从显式地分配和释放所使用内存的重担下解放出来,但如果程序继续引用不再有用的对象时,内存泄漏还是有可能发生。JRockit Memory Leak Detector工具用来发现和查找内存泄漏原因。趋势分析器为用户提供了一个趋势分析,可以发现非常缓慢的泄漏,显示详细的堆统计信息(包括指向泄漏对象和分配位置的引用类型和实例),可以说明应用程序中每个类使用堆空间的情况,显示某一类型的实例使用了多少空间、它们占用了堆的哪一部分、存在多少个实例以及每秒钟堆空间使用的增加速度(以字节为单位),并快速找出泄漏原因。使用先进的图形化表现技术,以便更容易定位和理解有时比较复杂的信息。
JRockit Memory Leak Detector还提供快速找出泄漏原因的手段。可以在趋势分析表中选择一个怀疑类型,所有具有指向选中类型的实例的类型都可以显示在一个图中。图形节点可以随意展开,用户可以回溯到导致引用的最终原因。类的实例可以被显示,指向一个选中实例的所有实例都可以在一张实例图中显示出来。可以跟踪某个类的所有分配情况。 来源:考试大- 计算机二级考
更多信息请查看 java进阶网 http://www.javady.com
分享到:
相关推荐
### JVM性能调优知识点 ...以上是对“jvm性能调优”的详细介绍,涵盖了JVM的基础知识、性能调优的流程及具体指标、监视和分析工具的使用、GC调优的一般原则等内容。这些知识点对于理解和实践JVM性能优化至关重要。
Oracle JRockit是一款高性能、优化过的Java虚拟机(JVM),专为服务器端应用程序设计,尤其是在需要高吞吐量和低延迟的环境中表现卓越。它曾经是Oracle公司的一个重要产品,但现在已被Java HotSpot VM所取代,后者是...
首先,需要理解JVM(Java虚拟机)的基本概念,以及在性能调优中的关键作用。JVM是运行Java程序的核心组件,负责解释Java字节码,并将字节码转换成特定平台的机器码。在性能优化过程中,JVM的配置、监控和调优是确保...
它采用了创新的算法和技术,如早期的飞行记录器(Flight Recorder)和使命令分析器(Mission Control)等工具,这些工具能够帮助开发者深度分析和调优应用性能。飞行记录器可以收集运行时的数据,而使命令分析器则...
(注:这里我以JDK得默认路径进行安装说明,即C:\Program Files\Java\jrmc-4.0.0-1.6.0与C:\Program Files\Java\jrockit-R28.0.0-jre1.6.0_17这两个路径。如果您安装的不是这个默认路径,请要根据您安装的具体路径去...
- **性能监控工具**:为了有效地进行性能调优,需要借助各种监控工具。在线监控工具如JRMC (JRockit Real Time Management Console) 可以实时监控JVM的状态,帮助开发者诊断问题。 - **性能指标**: - **内存占用*...
本文将详细介绍JDK自带的一些强大的JVM监控工具,包括jconsole、jvisualvm以及Oracle JRockit Mission Control (JRMc),并指导如何利用这些工具进行本地和远程JVM监控。 #### 监控工具介绍 ##### jconsole ...
通过以上步骤,即使 CoherenceServer 以 SYSTEM 用户身份运行,也可以顺利使用 JRMC 或 jconsole 对其实例进行监控和性能调优。这对于维护 Coherence 集群的稳定性和优化其性能具有重要意义。同时,这种方式也展示了...
### Java战略及发展方向 #### 南蒂妮·瑞曼尼 #### 甲骨文公司软件研发部高级总监 本文档提供了关于Java战略...无论是从开发效率还是技术性能方面,Java都在不断适应新兴技术和市场趋势的变化,以满足开发者的需求。
通过上述介绍可以看出,Weblogic 11g是一款强大的企业级应用服务器,不仅提供了高性能和高可用性,还引入了一系列新的特性和工具,如自调优内核、过载保护机制、动态配置变更以及JRockit Flight Recorder等,这些都...
JRockit远程监控Linux环境下WebLogic方案是针对Java应用服务器WebLogic在Linux操作系统上的性能管理和故障排查的一种技术。在大型企业系统中,由于复杂的业务逻辑和大量数据处理,内存泄漏成为常见的问题,往往在...
Java Development Kit(简称JDK)是Java语言的基础软件包,包含了编译、运行Java程序所需的各种工具。本文档将详细介绍如何安装JDK并配置相应的环境变量,确保Java应用程序能够在您的计算机上顺利运行。 #### 二、...
WebLogic Server作为一款高性能的企业级Java应用程序服务器,被广泛应用于构建和部署各种类型的应用程序。本文档将详细介绍如何在Windows Server 2003 x64操作系统上部署WebLogic Server 9.2版本,包括安装前的准备...
JRockit是由Oracle开发的一款高性能、低内存消耗的Java虚拟机,特别适合用于诊断和解决内存泄漏问题。在大型企业系统中,由于处理大量数据,内存泄漏问题可能在生产环境中才显现出来,导致系统性能下降甚至崩溃。...
Some BEA products require multiple license keys for full functionality, or use a license key which is not intuitively identified as being for that ...BEA JRocKit Mission Control 3.0 LIC-JRMC30.txt