`
javamonkey
  • 浏览: 166790 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

内存分析OQL的几个例子

阅读更多

老发表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;
}
}
);

分享到:
评论

相关推荐

    Macrobject OQL.NET 对象查询语言

    OQL.NET 是一套强类型的数据库对象查询语言 (OQL,Object Query Language),和 SQL 以及其它 OQL 不同的是,OQL.NET 基于宿主语言 (基于 C# 和 VB 等原生 .NET 语言而不是字符串)。OQL.NET 兼容 SQL-92 标准。  ...

    OQL基本教程(个人笔记)

    SOA 框架 用友U9 笔记。OQL教程基础 个人总结。希望对大家有帮助。 本人积分比较少 貌似黑了 点呵呵!

    OQL应用指南

    OQL是一套面向对象的查询语言,基本上是SQL语句在面向对象中的对应物,它使用对象的类名,属性名等概念表达SQL中原来的表名,列名来表达查询概念,返回一个表格状的数据

    oql2json:Netcool ITNM OQL将ANTLR生成的转换器插入JSON

    oql2json主要是一种,它理解OQL插入语句,然后理解一些代码行以遍历解析树并将其转换为JSON。 如何使用 (shell) $ git clone https://github.com/rc9000/oql2json (shell) $ cd cd oql2json/oql2json (shell) $ ...

    iTop文档合集(共8份)

    Customizing iTop 1-0; How to setup authentication with iTop; iTop 1-0 user guide; iTop 1-2 admin guide; iTop Customization; iTop Implementation Guide; Localizing iTop;...OQL Reference;

    MemoryAnalyzer(JDK8)-1.11.0.20201202-win32.win32.x86_64.zip

    Memory Analyzer Tool(MAT)工具是 eclipse 的一个插件(MAT 也可以单独使用),它分析大内存的 dump 文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用 OQL 对象查询,...

    MemoryAnalyzer(JDK11)-1.12.0.20210602-win32.win32.x86_64_.zip

    Memory Analyzer Tool(MAT)工具是 eclipse 的一个插件(MAT 也可以单独使用),它分析大内存的 dump 文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用 OQL 对象查询,...

    Spring Data JPA 简化 JPA 开发

    Spring Data JPA 简化 JPA 开发

    PDF.NET数据开发框架V3.0演示版

    * 类似LINQ的支持ORM实体类查询的OQL表达式(有了LINQ为啥还要搞一个OQL?本框架 OQL的基本设计在LINQ或者说本人知道 LINQ之前,另外,.NET3.5框架才正式支持LINQ,而我们公司的一个产品却因为采用了3.5框架安装...

    MAT(Memory Analyzer Tool)

    MAT(Memory Analyzer Tool)工具是eclipse的一个插件,使用起来非常方便,尤其是在分析大内存的dump文件时,可以非常直观的看到各个对象在堆空间中所占用的内存大小、类实例数量、对象引用关系、利用OQL对象查询,...

    Java虚拟机

    全书共分为五大部分,围绕内存管理、执行子系统、程序编译与优化、高效并发等核心主题对JVM进行了全面而深入的分析,深刻揭示了JVM的工作原理。第一部分从宏观的角度介绍了整个Java技术体系、Java和JVM的发展历程、...

    PDF.NET 数据开发框架V3.0源码

    * 类似LINQ的支持ORM实体类查询的OQL表达式(有了LINQ为啥还要搞一个OQL?本框架 OQL的基本设计在LINQ或者说本人知道 LINQ之前,另外,.NET3.5框架才正式支持LINQ,而我们公司的一个产品却因为采用了3.5框架安装部署...

    odl 数据库设计PPT (ooa ->ER)

    odl 数据库设计PPT ,花费了不少精力整理了一篇有关ODL数据库建模的PPT+案例,由于LIB太大,请大家自行加入Hibernate 3.2类库

    PDF.NET Ver4.5开源源码

    框架的主要特征: •WinForm/WebForm 数据控件、智能表单 •ORM 功能,提供操作实体类...•提供集成开发工具,自动生成代码,支持多种数据库的查询分析器 •。。。 本框架是在原来Ver 3.0的基础上再次开源,详情请看 ...

    apache-geode-1.12.0.tgz

    引入了一个可插拔的OQL安全框架,以限制可以从OQL调用哪些类和方法。系统管理员可以在运行时更改安全态势。提供的实现包括:RestrictedMethodAuthorizer、UnstratedMethodAuthorizer、RegExMethodAuthorizer和...

    QUANTUM LOGICS

    5 A modal interpretation of OL and OQL 32 6 An axiomatization of OL and OQL 35 7 The intractability of orthomodularity 40 8 Hilbert quantum logic and the orthomodular law 45 9 First-order quantum ...

    金蝶EAS的基本常用语句

    金蝶EAS的基本常用语句,

    QueryApiBlogPost:示例项目如何使用Mendix查询API

    使用Mendix查询API构建可重用的微流操作Mendix业务建模器支持两种查询语言来检索数据: Xpath是一种易于使用的查询语言OQL与SQL类似,并提供更强大的报告功能您可以在Mendix Modeler中使用这些查询语言,但是两种...

    castor R/M映射神器

    Castor是ExoLab Group下面的一个开放源代码的项目,它主要实现的是O/R映射功能。它主要API和数据接口为:JDO-like, SQL, OQL, JDBC, LDAP, XML, DSML。它支持分布式目录事务处理和时间;提供处理XML、Directory、...

    Macrobject NObject O/R Mapping 框架

    NObject O/R Mapping 框架包含了 OQL.NET,一套基于 C# 和 VB.NET 等原生 .NET 语言的强类型对象查询语言 (OQL, Object Query Language) 使您甚至不需要写一行 SQL 语句。 ??NObject O/R Mapping 框架能帮您减少 30...

Global site tag (gtag.js) - Google Analytics