对于每一个java进程来说都有自己的内存池和使用空间,而这也就意味着会出现内存使用错误等问题,而这时候我们就需要对java内存进行诊断分析,今天云南java培训http://www.kmbdqn.cn/就一起来了就一下,在进行内存诊断上都有哪些软件可以使用。
Java堆:分析诊断数据
堆转储分析
堆转储可以使用如下的工具进行分析:
EclipseMAT(内存分析工具,MemoryAnalyzerTool)是一个社区开发的分析堆转储的工具。它提供了一些很棒的特性,包括:
可疑的泄漏点:它能探测堆转储中可疑的泄露点,报告持续占有大量内存的对象
直方图:列出每个类的对象数量、浅大小(shallow)以及这些对象所持有的堆。直方图中的对象可以很容易地使用正则表达式进行排序和过滤。这样有助于放大并集中我们怀疑存在泄露的对象。它还能够对比两个堆转储的直方图,展示每个类在实例数量方面的差异。这样能够帮助我们查找Java堆中增长快的对象,并进一步探查确定在堆中持有这些对象的根
不可达的对象:MAT有一个非常棒的功能,那就是它允许在它的工作集对象中包含或排除不可达/死对象。如果你不想查看不可达的对象,也就是那些会在下一次GC周期中收集掉的对象,只关心可达的对象,那么这个特性是非常便利的
重复的类:展现由多个类加载器所加载的重复的类
到GC根的路径:能够展示到GC根(JVM本身保持存活的对象)的引用链,这些GC根负责持有堆中的对象
OQL:我们可以使用对象查询语言(ObjectQueryLanguage)来探查堆转储中的对象。它丰富了OQL的基础设施,能够编写复杂的查询,帮助我们深入了解转储的内部。
JavaVisualVM:监控、分析和排查Java语言的一站式工具。它可以作为JDK工具的一部分来使用,也可以从GitHub上下载。它所提供的特性之一就是堆转储分析。它能够为正在监控的应用创建堆转储,也可以加载和解析它们。从堆转储中,它可以展现类的直方图、类的实例,也能查找特定实例的GC根
jhat命令工具(在/bin文件夹中)提供了堆转储分析的功能,它能够在任意的浏览器中展现堆转储中的对象。默认情况下,Web服务器会在7000端口启动。jhat支持范围广泛的预定义查询和对象查询语言,以便于探查堆转储中的对象
Java任务控制(JavaMissionControl)的JOverflow插件:这是一个实验性的插件,能够让Java任务控制执行简单的堆转储分析并报告哪里可能存在内存浪费
Yourkit是一个商业的Javaprofiler,它有一个堆转储分析器,具备其他工具所提供的几乎所有特性。除此之外,YourKit还提供了:
可达性的范围(reachabilityscope):它不仅能够列出可达和不可达的对象,还能按照它们的可达性范围显示它们的分布,也就是,强可达、弱/软可达或不可达
内存探查:YourKit内置了一组全面的查询,而不是使用ad-hoc查询功能,YourKit的查询能够探查内存,查找反模式并为常见的内存问题分析产生原因和提供解决方案。
分享五个Java程序员必须掌握的工具。
1、SparkJava
这是针对Java开发者的一个新的轻量级以及强大的Web应用框架。Spark拥有简单和直接的方法,你可以使用Spark框架,通过做一些繁琐的XML配置来编码应用。Spark助你更轻松的开发Java Web应用。
2、jClarity
jClarity是两个产品的组合,其中illuminate用于性能监控,census则用于收集日志和分析数据,框架是轻量级的,并且非常的紧凑。
3、Clover
Clover是一款伟大的用于代码覆盖的工具,该工具有助于编写对应用测试有用的代码。你可以在IDE或持续集成系统中运行Clover。工具优化于提升你的测试速度。
4、jProfiler
jProfiler有直观的用户界面,可以帮助你解决性能瓶颈以及理解问题。你可以很容易的确定内存泄漏并使用jProfiler修复线程问题。
5、Visualvm
Visualvm是一款免费的、集成了多个JDK命令行工具的可视化工具,它能为您提供强大的分析能力,对Java应用程序做性能分析和调优。
以上就是和大家分享的关于Java工程师必须掌握的五个工具。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)