如何诊断 Java 8 元空间泄漏?

2023-12-31

我有一个具有一些有趣行为的 J2EE 应用程序...堆似乎表现良好,随着时间的推移,随着垃圾收集的进行而增长和收缩。总体上没有明显的长期堆扩展。然而,元空间一直以每小时 20 Mb 左右的速度稳定增长,直到达到 MaxMetaspace 并遇到 OOME。我尝试过并行和 G1 垃圾收集器(jdk1.8.0_40)。

应用程序在执行期间不会重新部署,因此看起来这不是典型的类加载器泄漏。有人对如何追踪这次泄漏的来源有建议吗?


java.lang.OutOfMemoryError: Metaspace 的主要原因是:

  • 要么课程太多 or
  • 班级太大正在加载到元空间。

如果您想重现问题,请使用以下代码片段:

public class Metaspace {
static javassist.ClassPool cp = javassist.ClassPool.getDefault();

public static void main(String[] args) throws Exception {
    for (int i = 0; ; i++) { 
        Class c = cp.makeClass("eu.plumbr.demo.Generated" + i).toClass();
    }
  }
}

所有这些生成的类定义最终都会消耗元空间。

Java助手Maven 仓库 http://mvnrepository.com/artifact/javassist/javassist.

您可以找到更多有关 OOME 的信息here https://plumbr.eu/outofmemoryerror/metaspace

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何诊断 Java 8 元空间泄漏? 的相关文章

随机推荐

  • 如何将networkX图导入neo4j?

    我有一个创建的图表networkX我正在使用 neonx 将其导入neo4j在本地主机上 我有一个networkX类型图称为G 下面是代码 data1 json graph node link data G H json graph nod
  • 由 tycho maven 将 JRE 与基于 RCP 插件的应用程序捆绑在一起

    我有基于插件模型的 RCP 应用程序 我想将 JRE 放入 Maven Tycho 创建的最终工件中 我尝试遵循这些建议 在第谷构建中包含一个 jre https codeiseasy wordpress com 2012 07 31 in
  • 保存后会在“我的文档”中创建 Excel Addin 的副本

    我有一个应用程序 在 IBM Notes 中运行 使用 Lotusscript 等 它通过 OLE 自动化创建一个新的 Excel 对象 在我的应用程序中 我创建一个新的工作簿并将其保存到临时文件夹 我将其另存为不带宏的 Excel 工作表
  • HTML5 语音输入和 Google Translate 文本转语音,Chrome 中的问题

    我正在创建一个语音 文本备忘录 Web 应用程序 这里 http gustavstromberg se sandbox html5 localstorage http gustavstromberg se sandbox html5 loc
  • awk 命令在 Snakemake --use-singularity 中失败

    我正在尝试将 Snakemake 与 Singularity 结合起来 我注意到一个简单的awk使用奇点时命令不再起作用 这 1最后一行被 bash 替换 而不是被用作第一个字段awk 这是一个最小的工作示例 蛇形锉刀 singularit
  • Elasticsearch - 模糊、短语、完成建议和破折号

    因此 我一直在问单独的问题 试图实现我想要实现的搜索功能 但仍然达不到要求 所以我想我只会问人们他们对最佳 Elasticsearch 设置 映射 索引和查询结构的建议 以完成我正在寻找的工作为了 当您键入查询类别的解决方案时 我需要进行搜
  • 是否可以编译unittest而不运行它们并为特定模块显式运行unittest?

    我经常在开发 API 时在主函数中编写测试代码 但因为 D 集成了单元测试 所以我想开始使用它们 我当前的工作流程如下 我有一个脚本可以监视任何 d 文件中的文件更改 如果脚本找到修改过的文件 它将运行dub build 问题是dub bu
  • 在 tabcontrol C# 中显示多个数据表

    我有一个小程序 需要一个数据表 从sql数据库获取数据 然后按字段将其拆分为数据表数组 然后应将其显示在选项卡控件中 每个字段都在其自己的选项卡中 分割 采用单个数据表并分割成数据表数组 我认为工作正常 public DataTable s
  • 如何模拟 REST API [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 MVC 应用程序需要调用第三方供应商的 REST API REST API 应该返回 JSO
  • 是否有重新启动集群的最佳实践

    我遵循亚历克斯埃利斯的优秀tutorial https gist github com alexellis fdbc90de7691a1b9edb545c17da2d975使用kubeadm在 Raspberry Pi 上启动 K8s 集群
  • Gitignore 不忽略文件夹

    我已将多个文件夹添加到我的 gitignore文件 但当我这样做时它们仍然出现git status 我的安装 计算机是新的 我正在尝试在 svn 中初始化 git 存储库 正如我之前所做的数百次一样 尽管不是在这台机器上 文件夹被标记为忽
  • 如何在 ActiveMQ 5.2 中打开 JMX

    在 ActiveMQ 5 2 中启用 JMX 的正确方法是什么 我见过相互冲突的文档 所以我想知道是否有人知道正确的配置文件更改应该是什么 我想我可以通过更改用于启动 ActiveMQ 的批处理文件来使其工作 但我真的不知道
  • Android应用程序中的语音检测

    描述 我的应用程序记录手机麦克风的声音 我正在使用 android 标准类 android media AudioRecord 要做到这一点 应用程序有 2 个按钮 Start and Stop 当我按下start按钮应用程序开始记录 当我
  • 根据色调名称更改条形颜色

    我在用着seaborn and pandas从不同 但相关 的数据创建一些条形图 这两个数据集共享一个共同的类别 用作hue 因此我想确保在两个图表中该类别的条形颜色匹配 我该怎么办 一个基本的例子如下 import seaborn as
  • Oracle SQL:导出到 CSV 避免换行

    我需要批量导出每天 csv 文件中数据库的一些数据 实际上 我正在使用 SET COLSEP 命令 但在导出大小为 4000 VARCHAR2 4000 的大列时遇到一些问题 它在输出文件上返回给我许多空行和换行符 我将尝试用一个例子更好地
  • Visual Studio SSIS 项目 - 脚本任务生成错误

    我想学习在我的个人计算机上开发 SSIS 包 我对编写 C 脚本感兴趣 我使用 SSDT 在 Windows 10 Pro 64 位上安装了 Visual Studio 2019 还安装了 Integration Services Proj
  • PhpMyAdmin:“处理请求时出错:”(未显示错误)

    我在 Windows 10 64 位 上运行 XAMPP 作为开发环境 PhpMyAdmin 最近开始回复每一次尝试的操作 并出现以下错误 没有任何有关该错误的实际信息 我怎样才能继续前进而不收到错误 不起作用的行动 删除行 删除表 Edi
  • 在 Javascript 中启用和禁用 Div 及其元素[重复]

    这个问题在这里已经有答案了 我正在寻找一种方法启用和禁用这div id dcalc 和它的孩子 div class nerkheArz style width 380px height 370px background CDF text a
  • Bash 参数替换中 :- 和 := 有什么区别?

    Bash 参数替换中 和 有什么区别 他们似乎都设置了默认值 Quoting Bash 参考手册 https www gnu org software bash manual bashref html Shell Parameter Exp
  • 如何诊断 Java 8 元空间泄漏?

    我有一个具有一些有趣行为的 J2EE 应用程序 堆似乎表现良好 随着时间的推移 随着垃圾收集的进行而增长和收缩 总体上没有明显的长期堆扩展 然而 元空间一直以每小时 20 Mb 左右的速度稳定增长 直到达到 MaxMetaspace 并遇到