老发表beetl的更新日志,我也烦了,近期不忙,正好贡献点其他经验出来吧:
解决内存泄露的一个方法是分许heap dump文件,可以参考 http://visualvm.java.net/oqlhelp.html
我自己总结了一下以后可能用到的一些OQL,如下:
查找所有包含指定类的list
heap.objects(heap.findClass("java.util.ArrayList"),true, function(it){
if(it.size<=0){
return false ;
}
var i=0;
var data = it.elementData[0];
var className = classof(data).name;
if(isClass(className)){
return true
}else{
return false;
}
} )
function isClass(name){
var pattern = /com.netease/ ;
var result = pattern.exec(name);
return result!=null;
}
查找业务类直接或者间接引用的list
select filter(heap.livepaths(s),function(it){
var array = it ;
var i= 0;
var size = array.length;
for(;i<size;i++){
var className = classof(array[i]).name;
if(isClass(className)){
return true
}else{
return false;
}
}
return true ;
})
from java.util.ArrayList s
查找包含内容最多的List,这个应该是查找内存泄露的好语句
map(top(heap.objects('java.util.ArrayList'), 'rhs.size - lhs.size', 5),"toHtml(it)+'='+it.size")
查找当前系统属性
map(heap.objects(heap.findClass("com.netease.Main")),"it.size")
查找同样内容最多的string
var counts={};
var alreadyReturned={};
filter(
sort(
map(heap.objects("java.lang.String"),
function(heapString){
if( ! counts[heapString.toString()]){
counts[heapString.toString()] = 1;
} else {
counts[heapString.toString()] = counts[heapString.toString()] + 1;
}
return { string:heapString.toString(), count:counts[heapString.toString()]};
}),
'lhs.count < rhs.count'),
function(countObject) {
if( ! alreadyReturned[countObject.string]){
alreadyReturned[countObject.string] = true;
return true;
} else {
return false;
}
}
);
分享到:
相关推荐
一个基本的OQL查询语句通常由以下几个部分组成: - `SELECT`:指定要查询的对象或属性。 - `FROM`:指定查询的源,即对象或对象集。 - `WHERE`:条件子句,用来过滤满足特定条件的对象。 - `ORDER BY`:排序结果,...
OQL.NET 是一套强类型的数据库对象查询语言 (OQL,Object Query Language),和 SQL 以及其它 OQL 不同的是,OQL.NET 基于宿主语言 (基于 C# 和 VB 等原生 .NET 语言而不是字符串)。OQL.NET 兼容 SQL-92 标准。 ...
在这个例子中,查询是从指定的面向对象模型(UFIDA::U9::MO::MO::MO)中选择特定属性,并通过where子句过滤出特定部门名称的记录,最后以实际完成日期排序。 OQL的应用场景包括简单的条件过滤和复杂报表查询。其...
在给定的压缩包“MAT内存分析工具.zip”中,包含了两个不同版本的MAT:MemoryAnalyzer-1.7.0.20170613-linux.gtk.x86_64.zip和MemoryAnalyzer-1.10.0.20200225-linux.gtk.x86_64.zip。这两个版本分别对应于2017年6月...
MAT,全称Memory Analyzer Tool,是由Eclipse基金会开发的一款强大的Java堆内存分析工具。这款工具在2016年12月15日更新的版本,对于Java开发者来说,是诊断和解决内存泄漏问题的重要助手。MAT提供了丰富的功能,...
通过解析heap dump,MAT能够展示对象的分配路径、引用链以及对象的大小,这些信息对于定位内存泄漏的源头至关重要。 1. ** dominator tree**:MAT的核心功能之一是Dominator Tree视图。这个视图显示了内存中的对象...
4. **OQL(Object Query Language)**:MAT内置的一种查询语言,允许用户查询heap dump中的对象和数据,类似于SQL,但针对内存分析。 5. **Shallow Heap和Retained Heap**:这两个指标分别表示对象自身占用的内存和...
MAT 1.2.1是该工具的一个版本,提供了更稳定和高效的内存分析功能。在这个压缩包文件中,我们可以找到MAT的相关文档、配置和组件。 1. `notice.html` 和 `index.html`:这两个文件通常是软件的许可证通知和用户界面...
MAT JVM内存分析工具有以下几个核心功能和知识点: 1. **快照分析**:用户可以创建JVM进程的内存快照,这包含了运行时的所有对象和它们之间的引用关系。快照可以保存以便后续分析,这对于远程服务器或不再运行的...
总之,"java内存泄露分析工具 eclipse3.5插件"是一个强大的分析工具,能有效地帮助Java开发者诊断和修复内存问题,提升应用的性能和稳定性。结合Eclipse 3.5,这个插件为开发环境带来了强大的内存分析能力,使得问题...
支配树上的每个节点表示一个对象,节点的大小表示其占用的堆内存,通过查看支配树,可以快速找到内存的主要消耗者。 2. **Leak Suspects报告**:MAT会自动分析heap dump,生成Leak Suspects报告,列出可能的内存...
在进行内存分析时,MAT的几个关键功能不容忽视: - Leak Suspects报告:MAT会自动分析heap dump,提供可能的内存泄漏嫌疑对象,节省了开发者手动排查的时间。 - Dominator Tree:显示了内存中所有对象的支配关系,...
Java内存分析是优化应用程序性能和解决内存泄漏问题的关键步骤,尤其在使用Eclipse IDE时,MAT(Memory Analyzer Tool)是一个非常强大的工具。MAT基于Eclipse平台,为Java开发者提供了深入的内存剖析功能,帮助我们...
JMAP是Java自带的一个命令行工具,它提供了对Java堆内存的详细分析功能,可以帮助我们诊断内存泄漏。JMAP的主要功能包括: 1. **生成堆转储文件**:通过`jmap -dump:format=b,file=<filename> <pid>`命令,我们可以...
MAT(Memory Analyzer Tool)是Eclipse基金会开发的一款强大的Java内存分析工具,特别适用于诊断和优化Java应用程序的内存管理问题。它可以帮助开发者定位内存泄漏、分析堆转储文件,从而提高应用的性能和稳定性。在...
Eclipse Memory Analyzer (MAT) 是一个强大的内存分析工具,尤其对于Java开发者来说,它是一个不可或缺的调试利器。MAT主要用于诊断Java应用程序的内存泄漏问题,帮助优化内存使用效率。这款工具由Eclipse基金会开发...
【MemoryAnalyzer-1.5.0内存分析工具.zip】是一个包含MemoryAnalyzer工具的压缩包,该工具主要用于JAVA应用程序的内存泄漏检测和分析。在深入探讨这个工具之前,我们需要理解内存泄漏的基本概念及其对软件性能的影响...
- **OQL查询**:MAT支持一种类似于SQL的语言,用于查询堆内存中的对象和属性,这为深入分析提供了强大的工具。 通过熟练使用MAT,开发者可以有效地识别和修复Android应用中的内存泄露,提高应用的稳定性和性能。...
《深入解析MemoryAnalyzer:JVM内存分析利器》 MemoryAnalyzer,简称MAT,是Eclipse基金会推出的一款强大的内存分析工具,其版本号为1.13.0.20220615-win32.win32.x86_64,专为Windows操作系统设计,支持32位和64位...
为了有效地排查和解决这类问题,开发者通常会借助专业工具,而“Java内存泄漏排除工具MAT”(Memory Analyzer Tool)就是一个强大的诊断工具。MAT是由Eclipse基金会开发的,用于分析Hprof格式的堆转储文件,帮助...