为什么JVM使用的内存比我分配的内存多

时间:2010-11-22 16:34:31

标签: memory-management jvm

我使用以下命令启动Java进程:

java -Xmx32m -jar winstone-lite.jar --warfile = myWarFile.war

它不是使用我指定的内存量,而是分配144m。

编辑: 当我说分配时,我的意思是当我看到“顶部”进程时,我看到144m作为使用的内存量。

我正在使用http://www.oracle.com/technetwork/java/embedded/documentation/index.html当前版本。

我想如果我的应用程序需要更多内存,那么分配jvm就会崩溃。

1 个答案:

答案 0 :(得分:3)

-Xmx只是告诉JVM它可以为其内部堆使用多少内存。

JVM需要内存用于其他目的(永久生成,临时空间等),再加上每个二进制文件需要空间来存放自己的二进制代码,加上任何库/ DLL / .so它都会加载。

你引用的144 MiB可能至少包含其他一些内存用途。

您是如何衡量内存使用情况的?在使用虚拟内存的现代操作系统中,测量进程的内存使用量并不是很简单,也不能表示为单个值。