我想将JVM绑定到固定的内存限制。任何人都可以帮我解决这个问题吗?
更具体地说,我希望我的代码可以使用最大1024 MB的内存空间,而我的JVM最初必须阻止大量内存。
另一件事,我有4 GB内存,但我的JVM只显示878 MB内存。为什么?
我使用了Runtime runtime = Runtime.getRuntime()
和runtime.totalMemory()/(1024*1024)
为什么C没有这种问题?
答案 0 :(得分:1)
Java不会占用超出需要的内存,如果你有一个hello world程序,无论你设置的是什么,它都不会使用1 GB。
在C中,使用或释放内存。内存没有其他状态。在Java中,您的内存具有字符串引用,软引用,弱引用和无引用。您确定何时清理内存以及软/弱引用是否被清除的最大内存。
C内存的问题是您必须知道何时不再使用内存,这可能导致内存泄漏和/或暴露给开发人员的额外复杂性。 Java没有这些问题,因为它有管理内存。
C程序也存在问题,直到内存+交换耗尽为止。对于性能良好的程序,这不是问题,但开发人员需要担心的另一件事是因为他不知道程序可能运行的机器有多少内存。
答案 1 :(得分:0)
您可以使用以下选项运行'java'
-xms最小内存大小 -xxs最大内存大小