当前位置: 首页 > 知识库问答 >
问题:

从Java堆转储中获得使用和释放内存

吴丁雷
2023-03-14

我有一个Java堆转储,我想了解使用的堆的大小和可用的空闲内存。我正在使用Eclipse内存分析器。这可能吗?

共有1个答案

澹台胜
2023-03-14

我不认为堆转储将具有创建堆转储时系统空闲内存的信息。堆转储是某个时间点Java虚拟机堆中所有对象的快照。JVM软件为所有类实例和数组的堆中的对象分配内存。当不再需要对象并且没有对该对象的引用时,垃圾回收器将回收堆内存。通过检查堆,您可以定位创建对象的位置,并在源中找到对这些对象的引用。

 类似资料:
  • 问题内容: 我需要一种 从应用程序内部 请求堆转储 的方法 。 基本原理:当遇到特定的错误情况时,我想转储堆,以便可以看到内存中有什么内容。 但是我想使它自动化(例如,当我检测到某些特定情况发生时。或者当看门狗不再收到ping命令时;当某些测试失败时)。因此,我需要一种从应用程序本身内部转储堆的方法。我似乎无法通过MX bean的东西找到它。尽管MX Bean可以通过监视器和“可拥有的同步器”信息

  • 我对std::memory\u order\u acquire和std::memory\u order\u release的理解如下: Acquire意味着在Acquire fence之后出现的内存访问不能重新排序到fence之前。 释放意味着在释放栅栏之前出现的任何内存访问都可以重新排序为栅栏之后。 我不明白的是,为什么在C 11原子库中,获取界限与加载操作相关联,而发布界限与存储操作相关联。

  • 遵循下面的过程,但我无法分析转储生成。 null 提前谢了。

  • 是否可以使用命令行中的JMX在linux(CentOS)上运行的进程上获取服务器堆转储? 无法打开VisualVM,无法安装jmap

  • 问题内容: 我们正试图在我们的Web应用程序中找到导致大量内存泄漏的元凶。我们在发现内存泄漏方面经验有限,但是我们发现了如何使用Eclipse MAT进行Java堆转储并对其进行分析。 但是,对于我们使用56 / 60GB内存的应用程序,堆转储的大小仅为16GB,而在Eclipse MAT中则更少。 语境 我们的服务器将Ubuntu 14.04上的Wildfly 8.2.0用于我们的Java应用程

  • 我们正试图找到web应用程序中大内存泄漏的罪魁祸首。我们在查找内存泄漏方面的经验相当有限,但我们了解了如何使用创建java堆转储,并在Eclipse mat中对其进行分析。 但是,由于我们的应用程序使用56/60GB内存,堆转储的大小只有16GB,在Eclipse mat中就更少了。 对于我们的java应用程序,我们的服务器使用Ubuntu14.04上的Wildfly8.2.0,其进程使用了95%