Java桌面APP挂OS

时间:2016-03-09 14:41:11

标签: java garbage-collection

我有一个桌面应用程序,有点'记忆力饥渴,每15秒执行一次后台任务。通过JVisualVM进行分析时,每次垃圾收集后使用的堆大约为60mb,GC之前大约为210mb,尽管如果经常使用应用程序,它会增加。堆大小始终在380 / 400mb左右。这几乎一直保持不变,至少在我的本地机器上分析应用程序时。

问题是,在某些客户端,在极少数情况下,系统会挂起,因为操作系统显然没有足够的内存,因为它在堆中使用(即使它没有被使用)申请本身)。

因此,在一台4GB的机器中,当操作系统本身和另一个应用程序消耗大约2GB时,当使用两个或三个应用程序实例时很容易导致内存使用率达到95%,这就是我认为的地方挂起操作系统。

有没有办法让堆大小正好是应用程序需要的?或者我在谈论BS,问题是由于其他原因而发生的?

1 个答案:

答案 0 :(得分:1)

您可以尝试将堆上的限制设置得更小。这将强制垃圾收集器执行操作,但会使程序的内存占用更小。

此处有一个问题,其中包含有关如何设置that的信息。