Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
研究javajit和其他内存_Java_Out Of Memory_Jit - Fatal编程技术网

研究javajit和其他内存

研究javajit和其他内存,java,out-of-memory,jit,Java,Out Of Memory,Jit,我正在调查一个java应用程序的内存不足问题,该应用程序运行在由mesos marathon协调的docker容器中 容器被设置为2GB内存 JVM堆显式设置为最小1Gb和最大1.5GB 恒定的测试工作负载,然后是最终的容器出口代码137(OOM) 在测试开始时和1小时后比较了两个JavaCore,发现称为JIT的“Other”具有最大的增量 JVM堆的使用没有问题 首字母 2MEMUSER +--JIT: 318,789,520 bytes / 778 allocations 2

我正在调查一个java应用程序的内存不足问题,该应用程序运行在由mesos marathon协调的docker容器中

  • 容器被设置为2GB内存
  • JVM堆显式设置为最小1Gb和最大1.5GB
  • 恒定的测试工作负载,然后是最终的容器出口代码137(OOM)
  • 在测试开始时和1小时后比较了两个JavaCore,发现称为JIT的“Other”具有最大的增量
  • JVM堆的使用没有问题
首字母

2MEMUSER      +--JIT: 318,789,520 bytes / 778 allocations
2MEMUSER       |  |
3MEMUSER       |  +--JIT Code Cache: 268,435,456 bytes / 1 allocation
2MEMUSER       |  |
3MEMUSER       |  +--JIT Data Cache: 16,777,728 bytes / 8 allocations
2MEMUSER       |  |
3MEMUSER       |  +--Other: 33,576,336 bytes / 769 allocations
1小时后

2MEMUSER      +--JIT: 525,843,728 bytes / 8046 allocations
2MEMUSER       |  |
3MEMUSER       |  +--JIT Code Cache: 268,435,456 bytes / 1 allocation
2MEMUSER       |  |
3MEMUSER       |  +--JIT Data Cache: 62,916,480 bytes / 30 allocations
2MEMUSER       |  |
3MEMUSER       |  +--Other: 194,491,792 bytes / 8015 allocations
我想知道,使用Eclipse内存分析器工具(MAT)进行的核心转储是否有助于了解这个“其他”空间中的内容

我们试图通过以下方式限制JIT内存的使用

但似乎无法让ARG正常工作

我们正在使用 IBM JRE 1.8.0 Linux amd64-64(构建8.0.5.17-pxa6480sr5fp17-20180627_01(SR5 FP17))


人们可以分享解决JIT本机内存消耗问题的工具/经验吗?

在“metaspace”内存中可能存在内存泄漏。这是JVM用来保存(例如)JIT编译的类和其他类元数据的堆外内存

metaspace泄漏的两个常见原因是:

  • 在开发过程中反复热加载代码导致类加载器泄漏,或
  • 代理
    类/对象或类似内容泄漏
有一些JVM选项可以限制元空间的大小;e、 g.
-XX:MaxMetaspaceSize=256m


以下是关于诊断元空间泄漏的问答:


我刚刚注意到您使用的是IBMJRE,而不是Oracle/OpenJDK。因此,上述规定并不直接适用

但根本问题很可能是相同的:通过类加载器/热加载或代理类泄漏

*-Xjit:disableCodeCacheConsolidation
-Xcodecachetotal128m*