我正在编写将在内存很少的环境中运行的java。我的机器有大量内存,所以我需要限制堆大小(这是我可以应用的唯一限制吗?)。我在eclipse中一直使用“-Xmx100m”作为VM参数,但是当我运行应用程序时,我可以在任务管理器中看到所使用的内存远远超过100MB。我错误地使用了这个吗?
此外,我的大部分内存都是在局部变量中分配的。这些将被放在线程的堆栈中,它位于堆空间中,对吗?好奇,如果我的程序完全由静态方法构成,那么这些局部变量将在哪里分配?
谢谢!
编辑:我想我应该让我的问题变得更简单:如何用jvm为资源较少的环境可视化?
答案 0 :(得分:0)
堆栈始终存在,并且可以在其上分配变量 - 无论它是否是静态方法。
我还观察过几次jre实际使用的内存多于-Xmx设置指定的内存。这在this question.
中详细讨论