【发布时间】:2013-02-01 22:25:33
【问题描述】:
我正在编写将在内存很少的环境中运行的 java。我的机器有大量内存,所以我需要限制堆大小(这是我可以应用的唯一限制吗?)。我一直在 Eclipse 中使用“-Xmx100m”作为 VM 参数,但是当我运行应用程序时,我可以在任务管理器中看到使用的内存远高于 100MB。我用错了吗?
另外,我的大部分内存都分配在局部变量中。这些将被放在位于堆空间中的线程堆栈上,对吗?只是好奇,如果我的程序完全由静态方法组成,这些局部变量会分配到哪里?
谢谢!
编辑:我想我应该让我的问题更简单:我怎样才能为 jvm 可视化一个资源较少的环境?
【问题讨论】:
-
你用 -Xmx 设置的堆大小不是 JVM 使用的总内存,而只是为堆分配保留的空间。 JVM 本身需要内存来运行、加载字节码、管理其运行状态等等。
标签: java memory memory-management limit