Java:主站中的GC调整是否为主从设置?

时间:2012-06-01 08:11:12

标签: java garbage-collection

对于以下情况,我应该如何调整GC(例如收集器的类型,堆的最小/最大大小,新/旧的大小,Eden与幸存者的比率等)? (我使用的是Sun JDK 6,可用内存为1GB)。

1)运行tomcat的主机,后者又运行一个Web应用程序来显示主机下各种节点机器的状态

2)节点状态消息包括CPU,内存,IO使用情况等;典型的邮件大小为1KB

3)节点每秒向主节点发送3个这样的消息,主节点下面有10个节点

4)主设备必须将最近一小时的状态数据保存到其内存中,因此主设备必须保留在内存中的总状态数据为:3kb * 3600 * 10 = 108MB

5)主人当然需要内存用于其他任务,因此JVM可以获得高达一半的GB而不是更多。

我的具体问题是,如果我保留一个更大的新一代,会发生很多复制,因为这些物体至少可以存活一个小时;如果我保持旧的更大,那么会发生很多次要的收藏,所以我该怎么做呢?

2 个答案:

答案 0 :(得分:4)

衡量自己!

将JVisualVM附加到Tomcat进程,查看在各种负载下的行为方式。您很可能会发现Visual GC插件非常有用。

请参阅http://techblog.zabuchy.net/2012/monitoring-of-tomcat-with-visualvm-and-visualgc/获取灵感。

答案 1 :(得分:1)

在确定真正的性能问题之前,我甚至不会考虑GC调整。默认值可能会正常工作。

基本上这是一个相当GC-light的应用程序。你说的内存分配只有每秒10万左右,工作集大约100mb。对于现代服务器来说,这是非常微不足道的。