Java减少了内存使用量

tsd*_*sds 3 java memory jvm

我发现如果我的应用程序有大量可用内存,它会占用更多内存.我听说这种行为对于所有Java应用程序都很常见,但对我来说这是不可接受的.

所以问题是如何强制Java使用更少的内存?

我知道我可以System.gc()每隔几秒钟手动调用一次,但这样做是否正常,还有其他方法吗?

PS我的应用程序在生产服务器上定期更新,我需要监视一些泄漏的内存使用情况等等(通常没有泄漏,但如果有一个泄漏,我应该尽快看到它),而且我还需要预测时间什么时候我应该升级我的硬件.如果jvm无法预测地改变其记忆饥饿,所有这些事情都很难做到.所以我唯一想要的就是强制jvm在内存使用方面是可预测的(如果用户数量增加一倍,内存也会增加一倍)

tim*_*tes 7

您可以通过使用-Xmx参数调用java来告诉它使用更少的内存:

java -Xmx128M xxx
Run Code Online (Sandbox Code Playgroud)

将以最大128Mb运行(在Java 6中默认设置为"物理内存的1/4或1GB")

不要一直打电话System.gc()......这是你浪费的时间;-)

另外,你为什么担心这个?当java接近允许的最大内存时,无论如何都会执行GC扫描

  • 不要担心它......它崩溃了吗?如果是这样,它可能是你的内存泄漏,没有任何数量的`System.gc()`将修复... (4认同)