我正在进行以下设置:
OS CentOS release 6.4 (Final)
Memory 1024MB
CPU 1 × 2.4 Ghz @ 80%
Glassfish GlassFish Server Open Source Edition 3.1.2.2 (build 5)
我知道这只是一个内存有限的小设置,但它应该足够了。
这是我的问题(我知道,已经有很多关于它的文章):
经过一些使用后,我的记忆似乎堵塞了。这会导致挂起的Glassfish meminfo
显示类似于:
MemTotal: 1030772 kB
MemFree: 158488 kB
Buffers: 3204 kB
Cached: 16340 kB
SwapCached: 7100 kB
Active: 413424 kB
Inactive: 410252 kB
top
显示:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2380 root 20 0 860m 658m 6028 S 99.8 65.4 170:58.30 java
结论
我的Glassfish服务器会在一段时间后使用所有资源。我不确定为什么CPU会被堵塞,尽管我怀疑这与垃圾收集有关。
我的问题是,如何防止这种情况发生?我应该配置我的GC,如果是,如何配置?
答案 0 :(得分:1)
1024MB并非易事。我不知道你的应用程序在做什么,但这是一个值得尊敬的开始。
由于Java使用世代记忆模型,我建议您获取所有世代的动态图片:perm gen,eden等。
我喜欢Visual VM,安装了所有插件。它让我可以实时查看内存,线程,CPU,对象。试一试,看看它是否对你有所帮助。您需要的更多信息。