heap-dump相关内容

如何知道使用jmx的Java堆中每一代的大小?

jmap可以知道每一代的大小,但我希望实时监视我的Java进程。 使用jmx,MemoryMXBean.getHeapMemoryUsage().getUsed()可以获得总的堆大小。但我找不到任何方法来获取: 新(年轻)和终身(老)世代人数; 伊甸园的大小和新一代的每一个幸存者。 推荐答案 您可以使用ManagementFactory.getMemoryPoolMXBe ..
发布时间:2022-09-21 13:29:09 其他开发

Java Heap dump:如何通过1.io.netty.Buffer.ByteBufUtil 2.byte[]数组查找占用内存的对象/类

我发现我的一个Spring Boot项目的内存(RAM消耗)每天都在增加。当我将JAR文件上传到AWS服务器时,它占用了582MB的RAM(最大分配的RAM是1500MB),但是每天的RAM都在增加50MB到100MB,5天后的今天,它占用了835MB。目前项目用户规模为100-150人,睡觉API使用正常。 由于RAM的增加,应用程序多次关闭,并出现以下错误(从日志中发现错误): E ..
发布时间:2022-02-28 12:20:31 Java开发

在未捕获的异常上生成 Java 堆转储

当触发未捕获的异常时,我尝试生成堆转储.我尝试使用 jmap,但是因为当异常发生时进程已经完成,所以这是不可能的. 使用 UncaughtExceptionHandler 也不是选项,因为我只有被执行程序的二进制文件. 谁能帮帮我? 编辑:通过命令行或类似方法可以使用该技术很重要,因为我需要将其自动化.使用 GUI 是不行的 解决方案 这可以通过 JVMTI 代理将监听 ..
发布时间:2022-01-16 12:25:15 Java开发

如何在 Windows 上获取不在控制台中运行的 Java 进程的线程和堆转储

我有一个从控制台运行的 Java 应用程序,该控制台又执行另一个 Java 进程.我想获得该子进程的线程/堆转储. 在 Unix 上,我可以执行 kill -3 但在 Windows AFAIK 上,获取线程转储的唯一方法是控制台中的 Ctrl-Break.但这只会给我父进程的转储,而不是子进程. 还有其他方法可以获得堆转储吗? 解决方案 假设您知道 pid,您可以 ..
发布时间:2022-01-16 11:45:15 Java开发

为什么我的 Java 堆转储大小比已用内存小得多?

问题 我们正试图找出我们的 Web 应用程序中大量内存泄漏的罪魁祸首.我们在查找内存泄漏方面的经验非常有限,但我们发现了如何使用 jmap 进行 java 堆转储并在 Eclipse MAT 中对其进行分析. 但是,由于我们的应用程序使用 56/60GB 内存,堆转储的大小仅为 16GB,在 Eclipse MAT 中甚至更少. 上下文 我们的服务器在 Ubuntu 14. ..
发布时间:2021-12-30 23:53:47 Java开发

如何以最少的停机时间在 Windows 中进行堆转储?

我想弄清楚为什么 Elasticsearch 节点上的 JVM 堆使用率始终保持在 80% 以上.为了做到这一点,我通过运行进行堆转储 jmap.exe -heap:format=b 5348 (5348 是进程 ID).然后我可以使用 VisualVM 分析转储. 问题是jmap在进行转储时暂停了JVM,所以节点基本离线5分钟左右. 这篇文章依赖于在 Linux 上使用 gdb ..
发布时间:2021-12-13 11:54:26 其他开发

安卓 ==>内存分析 ==>Eclipse 内存分析器?

我需要检查我的应用程序是否存在内存泄漏,我还需要查看我的应用程序的内存分配.我下载并安装了eclipse内存分析器,看起来第一步是打开heap dump.但是什么是堆转储,我如何创建堆转储.我到底要如何使用这个软件,我做了一些谷歌搜索,但我找不到任何有用的信息谢谢 解决方案 在调试应用时,打开 DDMS 在 Eclipse 中.在工具栏上有一个堆转储按钮,您可以使用它生成堆转储以在 Ecl ..
发布时间:2021-12-06 14:43:31 Java开发

如何在未在控制台中运行的 Windows 上获取 Java 进程的线程和堆转储

我有一个从控制台运行的 Java 应用程序,它依次执行另一个 Java 进程.我想获得该子进程的线程/堆转储. 在 Unix 上,我可以执行 kill -3 但在 Windows AFAIK 上,获得线程转储的唯一方法是控制台中的 Ctrl-Break.但这只会给我父进程的转储,而不是子进程. 还有其他方法可以获取堆转储吗? 解决方案 假设您知道 pid,您可以使用 ..
发布时间:2021-11-25 18:31:33 Java开发

Android Studio HPROF 参考树元素颜色代表什么?

谁能告诉我 Android Studio 中 HPROF Viewer 中粗体、蓝色一和红色一位置的确切含义是什么? 我在“参考树"面板中询问了一个. 最好的问候. 解决方案 我找不到任何关于此的文档,但通过查看一些堆转储,它们似乎是这样的: blue - 实例最接近的 dominator在右上角的窗格中选择. bold - GC 根,例如深度为 0 的实例,不被收集. ..
发布时间:2021-11-21 20:38:46 移动开发

如何在IntelliJ中分析堆转储?(内存泄漏)

我已经使用 jmap 工具从运行了几天的Java应用程序生成了一个堆转储->这导致了一个大的二进制堆转储文件. 如何在IntellIJ IDEA中对此堆转储执行内存分析? 我知道有用于Eclipse和Netbeans的工具,但如果可能的话,我宁愿使用IDEA. 分析的基本结果将告诉我每个类在内存中每个对象的实例数,从而使我能够开始调试内存泄漏. 解决方案 最好的方法是 M ..
发布时间:2021-05-16 19:21:36 Java开发

可以固定速率运行的可运行对象的Java项目过一会儿可以停止吗?约40小时后,矿井保持冻结

我自己学习了Java之后,我开始了一个项目,该项目通过api调用一个叫做torn的游戏从网站获取数据.在某些帮助下,我修复了一些小细节,但我遇到的主要问题仍未解决.经过一天半的运行,该程序将冻结.到目前为止,我什么都找不到.我花了一段时间堆堆,我注意到了一些事情.希望有人可以帮忙.在第一天左右,一切都很好(在 25小时).然后,几个小时后,该程序仍在运行,但是没有方法实例可以全部运行(运行40小时 ..
发布时间:2020-11-10 22:54:26 Java开发

单击“获取堆转储”对话框时,eclipse ide的内存分析未列出任何本地进程标识

我使用eclipse ide(kepler)的内存分析器,试图在程序运行时从本地运行的VM获取堆转储,但是“获取堆转储”对话框未列出要选择的pid。 我尝试配置hdrof jmap转储提供程序 with -jdkhome C:\Program文件\Java\jdk1.8.0_05\bin ,但没有任何反应。 任何解决方案。 谢谢。 解决方案 删除您路径中的bin ..
发布时间:2020-10-27 06:34:04 Java开发

如何可视化堆转储?

我们已经开发了使用golang的服务器,该服务器将接收并发请求并处理该请求(创建大对象-树),然后发送回答复。但是对象不是垃圾收集的。因此,我决定分析内存中存在的对象。首先,我编写了一个简单程序 package main import( “ fmt“ ” io / ioutil“ ” os“ ”运行时/调试“ ) func main(){ var i_am_a in ..
发布时间:2020-10-19 05:03:44 其他开发

Android Studio HPROF参考树元素颜色代表什么?

有人可以告诉我Android Studio中HPROF Viewer中的粗体,蓝色1和红色1位置到底是什么意思吗? 我在“参考树"面板中询问了一个. 最诚挚的问候. 解决方案 我找不到关于此的任何文档,但是通过查看一些堆转储,它们似乎是这样的: blue-最接近顶部的实例的统治者右窗格. bold-GC根,例如,应该收集 not 的深度为0的实例. 此答案具有有关GC根 ..
发布时间:2020-08-28 23:50:42 移动开发

JAVA-8中堆上的字符串对象数

从此堆栈溢出时的字符串对象数量,我开始知道如果我们做类似的事情: String s = new String("ABC"); 然后我们有两个objects,一个在堆上String,另一个在constant池上"ABC", 但是今天我进行了堆转储,发现堆自身上有两个objects.我同样使用MAT工具,请在下面找到屏幕截图. 所以我的查询是,堆上是否有两个对象Char[],而对 ..
发布时间:2020-08-01 21:55:49 Java开发

如何获取堆转储中使用的对象ID

我希望能够获得与Java堆转储中使用的相同的ID(通过jmap或JMX等创建).这是为了能够识别仍在运行的应用程序中的活动对象,而不是同一应用程序的较旧的内存快照(堆转储). 我已经进行了一些测试,这显然不是hashCode,也不是JDI唯一ID(您可以在调试器中看到). 通过检查sun.jvm.hotspot.utilities中的代码,我认为它是内存中的对象地址.但是我对sun.m ..
发布时间:2020-06-29 18:52:17 Java开发

如何分析.hprof文件中的堆数据并使用它减少内存泄漏?

最近,我在运行应用程序时遇到java.lang.OutOfMemoryError异常. 在这样的一个实例中,我能够使用jvisualvm进行堆转储. 我能够使用NetBeans 8.1 IDE打开从堆转储获得的.hprof堆转储文件,但是我不知道如何分析数据转储.从应用程序的角度来看,我想知道如何读取转储文件并采取纠正措施以减少内存不足异常. 解决方案 有很多方法可以找到导致内 ..
发布时间:2020-05-08 20:52:40 Java开发