当前位置: 首页 > 面试题库 >

限制ubuntu上的jvm进程内存

包承望
2023-03-14
问题内容

我想开始我与JVM OPTS应用:-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

问题答案:

您无法控制要控制的内容-Xmx只能控制Java Heap,它不能控制JVM 对 本机内存 的使用,JVM的使用根据实现而完全不同。

从下面的文章中感谢内存(了解JVM如何在Windows和Linux上使用本机内存)

维护堆和垃圾收集器使用您无法控制的本机内存。

需要更多的本机内存来维护维护Java堆的内存管理系统的状态。必须分配数据结构以跟踪空闲存储并记录收集垃圾时的进度。这些数据结构的确切大小和性质随实现的不同而变化,但是许多与堆的大小成正比。

和JIT编译器使用本机内存一样javac

字节码编译使用本机内存(与gcc之类的静态编译器需要运行内存的方式相同),但是JIT的输入(字节码)和输出(可执行代码)也必须存储在本机内存中。包含许多JIT编译方法的Java应用程序比较小的应用程序使用更多的本机内存。

然后你有使用本机内存的类加载器

Java应用程序由定义对象结构和方法逻辑的类组成。他们还使用Java运行时类库中的类(例如java.lang.String),并且可能使用第三方库。只要使用这些类,它们就需要存储在内存中。类的存储方式因实现而异。

我什至不会开始引用“线程”部分,我想您会得到一个想法,即
-Xmx它无法控制您认为它控制的内容,它控制着JVM堆,并不是所有东西都在JVM堆中,并且堆占了更多空间。您为管理和簿记指定的本机内存。



 类似资料:
  • 关于Java应用程序使用的驻留内存,我有两个问题。 一些背景细节: 我用-xms2560m-xmx2560m设置了一个java应用程序。 java应用程序在容器中运行。k8s允许容器最多消耗4GB. 堆:应用程序的工作方式似乎是使用所有内存,然后释放,然后使用等等。 这张快照说明了这一点。Y列是空闲堆内存。(由应用程序通过)提取) 我还可以使用HotSpotDiagnosticMXBean来确认它

  • 我在AWS Fargate服务上的docker容器中启动我们的Spring Boot应用程序,因此一旦CPU消耗达到100%以上,容器就会停止docker OOM--错误杀手 原因:OutofMemoryError:由于内存使用,容器被杀死 在指标上,我们可以看到CPU变得超过100%。似乎经过一段时间的分析,我们发现CPU消耗代码,但我的问题是,CPU如何能超过100%? 是否可以说JVM只使用

  • 提前感谢你的帮助

  • 本文向大家介绍jvm最大内存限制多少?相关面试题,主要包含被问及jvm最大内存限制多少?时的应答技巧和注意事项,需要的朋友参考一下 考察点:JVM (1)堆内存分配 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小 于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到

  • 问题内容: 我们在 Tomcat 服务器上部署了一个Web应用程序。我们运行某些计划的作业,然后堆内存达到峰值并稳定下来,一切似乎都很好。但是,系统管理员抱怨内存使用率(Linux上的“ top”)随着计划的作业的增加而不断增加。堆内存和CPU内存之间有什么关联?可以通过任何JVM设置来控制它吗?我使用 JConsole 监视系统。 我通过JConsole强制进行垃圾收集,并且堆使用率下降了,但是

  • 本文向大家介绍cgroup限制mongodb进程内存大小,包括了cgroup限制mongodb进程内存大小的使用技巧和注意事项,需要的朋友参考一下 以限制mongodb的内存大小为例。 通过cgroup限制后,当内存达到限额,进程会被kill。 数据查询脚本: 数据插入脚本: