在有限资源环境中测试Java

在有限资源环境中测试Java,java,memory,memory-management,limit,Java,Memory,Memory Management,Limit,我正在编写java,它将在内存很少的环境中运行。我的机器有大量内存,所以我需要限制堆大小(这是我唯一可以应用的限制吗?)。我在eclipse中一直使用“-Xmx100m”作为VM参数,但是当我运行应用程序时,我可以在任务管理器中看到所使用的内存远远超过100MB。我用错了吗 而且,我的大部分内存都是在局部变量中分配的。这些将放在线程的堆栈上,该堆栈位于堆空间中,对吗?好奇的是,如果我的程序完全由静态方法组成,这些局部变量将分配到哪里 谢谢 编辑:我想我应该让我的问题更简单:我怎样才能只为jvm可

我正在编写java,它将在内存很少的环境中运行。我的机器有大量内存,所以我需要限制堆大小(这是我唯一可以应用的限制吗?)。我在eclipse中一直使用“-Xmx100m”作为VM参数,但是当我运行应用程序时,我可以在任务管理器中看到所使用的内存远远超过100MB。我用错了吗

而且,我的大部分内存都是在局部变量中分配的。这些将放在线程的堆栈上,该堆栈位于堆空间中,对吗?好奇的是,如果我的程序完全由静态方法组成,这些局部变量将分配到哪里

谢谢


编辑:我想我应该让我的问题更简单:我怎样才能只为jvm可视化一个资源较少的环境?

堆栈始终存在,并且可以在其上分配变量—不管它是否是静态方法


我还多次观察到jre实际使用的内存比使用-Xmx设置指定的要多。这将在

中详细讨论,您使用-Xmx设置的堆大小不是JVM使用的总内存,而是为堆分配保留的空间。JVM本身需要内存来运行、加载字节码、管理其运行状态等等。