我发现如果我的应用程序有大量可用内存,它会占用更多内存.我听说这种行为对于所有Java应用程序都很常见,但对我来说这是不可接受的.
所以问题是如何强制Java使用更少的内存?
我知道我可以System.gc()每隔几秒钟手动调用一次,但这样做是否正常,还有其他方法吗?
PS我的应用程序在生产服务器上定期更新,我需要监视一些泄漏的内存使用情况等等(通常没有泄漏,但如果有一个泄漏,我应该尽快看到它),而且我还需要预测时间什么时候我应该升级我的硬件.如果jvm无法预测地改变其记忆饥饿,所有这些事情都很难做到.所以我唯一想要的就是强制jvm在内存使用方面是可预测的(如果用户数量增加一倍,内存也会增加一倍)
您可以通过使用-Xmx参数调用java来告诉它使用更少的内存:
java -Xmx128M xxx
Run Code Online (Sandbox Code Playgroud)
将以最大128Mb运行(在Java 6中默认设置为"物理内存的1/4或1GB")
不要一直打电话System.gc()......这是你浪费的时间;-)
另外,你为什么担心这个?当java接近允许的最大内存时,无论如何都会执行GC扫描