- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 VisualVm 来分析在 Tomcat 中运行的 Web 应用程序。 Tomcat 不断因内存不足错误而崩溃,因此我试图找出应用程序中导致该错误的原因。当我从 VisualVm 运行内存分析器时,看起来大部分内存都被 String/Char[] 占用,但除非我能找出这些字符串的更高级别容器,否则这些知识对我没什么好处。在研究中我发现了 OQL 和 rsizeof()
所以我可以例如 SELECT rsizeof(o) FROM instanceof my.package.class o
但我不知道我需要哪个类,所以我真的很希望能够运行类似 SELECT it.name, rsizeof(o) FROM instanceof Filter(Heap.classes(), "/my.package./(it.name)");
的东西相反,但这不起作用。
那么 OQL 是多少?理想情况下,我希望限制为前 10 个左右最大的,并按大小排序。
最佳答案
我不确定我是否完全理解,但是......
OQL 使用基于 JavaScript 的表达式语言,因此您可以使用以下语句,它将查找 java.util.regex 包内的所有对象(递归地)并对它们的大小求和,它将返回一个数字:
sum(filter(heap.objects(), "/^java.util.regex./(classof(it).name)"), 'rsizeof(it)')
这将花费相同的时间,我只在小堆上进行了测试。请注意包名称开头的 ^
。
关于java - 在 VisualVM/OQL 中,如何获取某个包中对象的所有实例的总大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646471/
我在 visualvm v1.3.8 中找到所需的对象: filter(heap.objects("java.lang.String"), "/hibernate\\.ejb\\.naming/(it
OQL 中是否可以检索属于一个包的所有对象?或者我可以用 wildcards 查询吗? 正如@haridsv 建议的那样,我试过了: SELECT * from "com.example.*" 和 S
有谁知道仅在堆输出中查找新对象的 OQL 语法吗?我找不到关于 OQL 选项的好的文档,sun 甚至有一个 example仅新输出,没有生成它的查询的示例语法。我所做的是 使用 jhat 创建了一组堆
我正在尝试使用 visualvm 识别内存泄漏。我通过 comapring 快照找到了一些候选对象,但由于这些候选对象太多,我想通过定位堆上最旧的实例来缩小搜索范围。有没有办法使用 OQL 来搜索这样
我正在使用 VisualVM 来分析核心转储。我怀疑某些 XML 对象导致了泄漏,但 String 对象太多,无法一一检查。 我可以使用 OQL 搜索以“GH”开头的字符串吗? 感谢您的帮助。 最佳答
如何在 jhat OQL where 子句中执行连词 [AND]? 我想这样做: select s from sun.security.x509.X500Name s where s.canonic
最近,由于内存不足,我们的生产发生了崩溃。我们获得了堆转储,这为我的团队提供了问题的答案,但我们仍然经历了 OQL 查询执行中的一些不确定行为。 在带有 OQL 的 VisualVM 中,我尝试获取具
我已经尝试过: select sort(obj.displayName, 'lhs < rhs') from my.org.BusinessClass obj 和 select sort(obj.di
如何使用 OQL 语法对 Eclipse MAT 中的对象进行计数?这不起作用: SELECT count(a) FROM org.hibernate.engine.EntityEntry a WHE
请帮帮我。我在 VisualVM 中分析我的堆转储。 如何获取所有值为 == "0"的字符串的数量?我有以下查询: select count(s) from java.lang.String s wh
我有一个堆转储,我正在使用 Eclipse MAT,但我想这应该可以通过 visualvm 或任何 OQL 客户端工作。 我们可以通过做类似的事情来选择一个类的所有实例的字段 select s.fie
我的查询结果有数百万行。我已经修改了visualvm.conf -J-DOQLController.limitResults=1000000 目前,作为一种解决方法,我运行查询,然后将结果复制并粘贴到
我的查询结果有数百万行。我已经修改了visualvm.conf -J-DOQLController.limitResults=1000000 目前,作为一种解决方法,我运行查询,然后将结果复制并粘贴到
我正在运行 java cocoon 2 和castor oql。我试图按今天的日期过滤我的 oql 查询,但我似乎无法弄清楚(或在谷歌中找到)日期的语法。数据库是 mySql,但 oql 由 java
我有一个内存转储文件,其中包含近 5000 个特定对象的实例。这些对象将被写入数据库,而我这样做的方式是在 jvisualvm 中编写一个 OQL 查询以生成一个字符串,该字符串将用作 SQL 插入,
我正在尝试使用 jhat/OQL 来跟踪 Tomcat 容器中的内存泄漏。我想问的问题是: “显示可从 javax.servlet.http.HttpSession 访问的 foo.bar.Cache
当我在 Eclipse Memory Analyzer 中执行以下 OQL 时 SELECT key FROM com.google.common.cache.LocalCache$StrongAcc
我正在尝试编写这样的查询: select {r: referrers(f), count:count(referrers(f))} from com.a.b.myClass f 但是,输出不显示实际对
已在 VisualVm 中打开 Java 堆转储,并且我正在尝试制定 OQL 查询以返回按对象参数之一排序的特定类 (se.greger.sven.olof.node.Task) 的所有对象 (重新灌
我正在使用 VisualVm 来分析在 Tomcat 中运行的 Web 应用程序。 Tomcat 不断因内存不足错误而崩溃,因此我试图找出应用程序中导致该错误的原因。当我从 VisualVm 运行内存
我是一名优秀的程序员,十分优秀!