gpt4 book ai didi

java - Ubuntu 内核杀死 java 进程,即使它没有内存不足

转载 作者:太空宇宙 更新时间:2023-11-04 04:39:31 25 4
gpt4 key购买 nike

我有一个 48 核、192 GB 内存和 Ubuntu 18.04 的 ec2 实例。我正在其上运行一个 java 应用程序,其中最大内存设置为 128 GB。在这期间,java 应用程序被 Linux 内核杀死。我连接了 JVisualVM,GC 日志也显示 Java VM 最多仅占用 50GB 堆。那么为什么 Linux 会杀死 java 应用程序呢?这台机器上没有运行其他任何东西,只有应用程序。我尝试运行 dmesg,我看到的是:

[166098.587603] Out of memory: Kill process 10273 (java) score 992 or sacrifice child
[166098.591428] Killed process 10273 (java) total-vm:287522172kB, anon-rss:191924060kB, file-rss:0kB, shmem-rss:0kB
[166104.034642] oom_reaper: reaped process 10273 (java), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB

最佳答案

要查看的关键是anon-rss:191924060kB。 RSS 是 Resident set size ,维基百科文章将其定义为

the portion of memory occupied by a process that is held in main memory

加上逗号,191,924,060kB 只差 192Gb。其中,50GB 是 Java 堆(Java 用于在运行时分配的对象的空间)实际使用的部分。其余部分包括 JVM 运行时、您的程序可能使用的任何库,当然还有您的程序本身。

您的程序占用的虚拟内存总计为287.5GB;这大概包括您分配的 128GB 堆中的其他 78GB。

关于java - Ubuntu 内核杀死 java 进程,即使它没有内存不足,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55996723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com