Java:主从设置中的 GC 调优?

标签 java garbage-collection

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

1) 一台运行tomcat的master机器,它又运行一个web应用程序来显示master下各种节点机器的状态

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

3)一个节点每秒向master发送3条这样的消息,一个master下有10个节点

4) master 必须将最后一个小时的状态数据保存在内存中,因此master 必须保存在内存中的总状态数据为:3kb * 3600 * 10 = 108MB

5) master 的其他任务当然需要内存,因此 JVM 最多可以达到 0.5 GB,但不会更多。

我的具体问题是,如果我保留一个更大的新代,就会发生大量复制,因为这些对象至少会存在一个小时;如果我让老一代变大,那么就会发生很多次要收集,那么我该怎么做呢?

最佳答案

测量你自己!

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

参见 http://techblog.zabuchy.net/2012/monitoring-of-tomcat-with-visualvm-and-visualgc/寻找灵感。

关于Java:主从设置中的 GC 调优?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10846677/

相关文章:

java - 如何在 Java 中将 zip 文件访问到 zip 文件

c# - 为什么 try/finally block 的存在会阻止垃圾收集器工作?

java - Android 垃圾收集器行为

c# - .NET WinForm GC 问题

java - 使用 byte[] 和 charset 的构造函数创建字符串对象

java - 如何使几个 View 具有相同的宽度

java - 在字符串中插入环境变量

java - 如何创建一个新的 ArrayList 并复制其中的所有内容?

java - java堆设置中最大堆大小的限制

memory-leaks - 禁用D的GC是 'ok'吗?