【问题标题】:Java process memory usage keeps increasing and java native memory tracking shows "Internal" consumes lots of memoryJava 进程内存使用量不断增加,Java 本机内存跟踪显示“内部”消耗大量内存
【发布时间】:2017-07-06 08:32:35
【问题描述】:

Java 1.8.0_131 + Windows Server 2012 R2。

'-Xmx=9000m'。但 Windows 任务管理器显示 java 进程使用超过 14 GB 内存。

NMT 显示“内部”消耗超过 4.5 GB 内存。为什么会出现这种情况?我知道为本地内存定义空间不是 Java 功能。但是有什么方法可以限制“内部”内存吗?

总计:保留=15782485KB,提交=14653869KB - Java 堆(保留=9216000KB,已提交=9216000KB) (mmap:保留=9216000KB,提交=9216000KB)

  • 类(保留=1277553KB,提交=260193KB) (课程#37738) (malloc=11889KB #64612) (mmap:保留=1265664KB,提交=248304KB)

  • 线程(保留=80528KB,提交=80528KB) (线程#79) (堆栈:保留=79872KB,提交=79872KB) (malloc=244KB #398) (竞技场=412KB #157)

  • 代码(保留=166388KB,提交=55208KB) (malloc=10356KB #10526) (mmap:保留=156032KB,提交=44852KB)

  • GC(保留=340353KB,提交=340277KB) (malloc=3521KB #1861) (mmap:保留=336832KB,提交=336756KB)

  • 编译器(保留=290KB,提交=290KB) (malloc=160KB #947) (竞技场=130KB #2)

  • 内部(保留=4513559KB,提交=4513559KB) (malloc=4513495KB #7980353) (mmap:保留=64KB,提交=64KB)

  • 符号(保留=52759KB,提交=52759KB) (malloc=48180KB #563951) (竞技场=4579KB #1)

  • 本机内存跟踪(保留=134867KB,提交=134867KB) (malloc=108KB #1634) (跟踪开销=134759KB)

  • 竞技场块(保留=190KB,提交=190KB) (malloc=190KB)

【问题讨论】:

  • 请问你到底在做什么?我为RAM感到难过。一定是这么填的。奇怪的是它还没有呕吐^^。但实际上:你在做什么来造成这种情况?
  • 实际上进程因为分配更多内存失败而导致OOME崩溃。这是一个企业系统的Java进程。它将大量对象加载到 Java 进程中。这就是它使用'-Xmx=9000m'的原因。但是我们发现 Java 进程消耗了大约 14.5 GB RAM,这几乎消耗了服务器 RAM 的大部分,并且 JVM 未能为 Java 进程分配更多内存。 NMT 输出显示内部类别消耗超过 4.5 GB 内存。

标签: java memory internal


【解决方案1】:

最终确认问题是由 DynaTrace Agent 引起的。

删除 DynaTrace 代理后,该问题不再出现。并且在应用 DynaTrace 更新后也不会出现此问题。

【讨论】:

  • 嗨,布伦特,您能否更新答案,您是如何发现 DynaTrace 导致问题的。我们在产品系统中遇到了同样的问题。
猜你喜欢
  • 2017-04-02
  • 2020-10-19
  • 2022-06-14
  • 2011-12-21
  • 2021-03-10
  • 1970-01-01
  • 1970-01-01
  • 2018-04-27
  • 1970-01-01
相关资源
最近更新 更多