【问题标题】:Why is the JVM using more memory than I am allocating为什么 JVM 使用的内存比我分配的多
【发布时间】:2010-11-22 16:34:30
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: memory-management jvm


    【解决方案1】:

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

    JVM 需要内存用于其他目的(永久生成、临时空间等),而且就像每个二进制文件一样,它需要空间来存放自己的二进制代码,以及任何库/DLL/.so 它加载。

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

    您如何测量内存使用情况?在使用虚拟内存的现代操作系统上,测量进程的内存使用情况并非易事,并且不能表示为单个值。

    【讨论】:

    • 我正在从 top 命令获取 144m。操作系统是 ubuntu。
    • @predhme: top 显示的值可能包括共享库等,所以它们总是比堆大得多。
    • 这样说,比较TOP上报的数量和windows任务管理器上报的值不准确吧?特别是因为他们有 2 个独立的 JVM?
    • 是的,你有太多不同的变量,比较会很困难。
    猜你喜欢
    • 2011-03-31
    • 2020-10-30
    • 2020-05-31
    • 2014-01-11
    • 2019-12-07
    • 2017-11-20
    • 2016-12-02
    • 1970-01-01
    相关资源
    最近更新 更多