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

15 浏览
0 Comments

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

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

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

但是,它仍然分配了144m的内存,而不是我指定的数量。

编辑:

当我说分配时,我意味着当我查看“top”进程时,看到正在使用的内存量为144m。

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

我认为,如果我的应用程序需要比我分配的更多的内存,Java虚拟机会崩溃。

admin 更改状态以发布 2023年5月20日
0
0 Comments

-Xmx仅告诉JVM其可以使用多少内存作为其内部堆。

JVM需要内存用于其他用途(永久代、临时空间等),再加上像每个二进制文件一样,它需要为自己的二进制代码,以及加载的任何库/DLL/.so保留空间。

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

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

0