在 ubuntu 上限制 jvm 进程内存
- 2024-10-30 08:36:00
- admin 原创
- 57
问题描述:
我知道有人问过类似的问题,也回答过类似的问题。我对答案并不满意,所以让我在这里更详细地留言。
我尝试使用 JVM OPT 启动我的应用程序:-Xmx128m -Xms32m -XX:MaxPermSize=64m
。当应用程序启动时,我通过键入来检查内存使用情况cat /proc/10413/status
,我发现 vmsize 大于 600512 kB!这比我的设置大得多。我想知道如何限制进程的 jvm 内存使用量。
Name: java
State: S (sleeping)
Tgid: 10413
Pid: 10413
PPid: 1
TracerPid: 0
Uid: 1001 1001 1001 1001
Gid: 1007 1007 1007 1007
FDSize: 128
Groups: 1001 1007
**VmPeak: 728472 kB**
**VmSize: 600512 kB**
VmLck: 0 kB
VmHWM: 298300 kB
VmRSS: 280912 kB
VmData: 647804 kB
VmStk: 140 kB
VmExe: 36 kB
VmLib: 13404 kB
VmPTE: 808 kB
VmSwap: 0 kB
Threads: 33
SigQ: 0/31522
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000000000
SigCgt: 2000000181005ccf
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
Cpus_allowed: f
Cpus_allowed_list: 0-3
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 3
nonvoluntary_ctxt_switches: 2
解决方案 1:
您无法控制您想要控制的内容,-Xmx
只能控制 Java 堆,它无法控制JVM 对本机内存的消耗,后者的消耗完全取决于实现方式。
摘自以下文章《感谢内存(理解 JVM 如何在 Windows 和 Linux 上使用本机内存)》
维护堆和垃圾收集器使用您无法控制的本机内存。
需要更多本机内存来维护 Java 堆的内存管理系统的状态。必须分配数据结构来跟踪可用存储空间并记录垃圾收集进度。这些数据结构的确切大小和性质因实现而异,但许多数据结构与堆的大小成正比。
JIT 编译器就像使用本机内存javac
一样
字节码编译使用本机内存(与 gcc 等静态编译器运行时需要内存的方式相同),但 JIT 的输入(字节码)和输出(可执行代码)也必须存储在本机内存中。包含许多 JIT 编译方法的 Java 应用程序比较小的应用程序使用更多的本机内存。
然后你就有了使用本机内存的类加载器
Java 应用程序由定义对象结构和方法逻辑的类组成。它们还使用 Java 运行时类库中的类(例如 java.lang.String),并且可能使用第三方库。只要使用这些类,它们就需要存储在内存中。类的存储方式因实现而异。
我甚至不会开始引用有关线程的部分,我想您已经明白了,它-Xmx
并不控制您认为它控制的内容,它控制着 JVM 堆,并不是所有东西都进入 JVM 堆,而且堆占用的本机内存比您为管理和簿记指定的要多得多。
解决方案 2:
与 Linux 上的任何其他进程一样,您可以限制 JVM 进程的内存使用量(比如说 4 GB):
$ ulimit -v 4194304
$ java ... # execute your Java program
(从技术上讲,这实际上是虚拟内存,是实际内存使用量的上限。但ulimit
显然不适用于实际 RAM 使用量。)
这将导致超过限制的内存分配失败,并可能导致OutOfMemoryError
应用程序退出。
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件