java - 为什么我的 Java 应用程序将 30% 的时间花在年轻代 gc 上?

标签 java solr garbage-collection

我正在查看 Solr 安装的 gc 日志文件,我注意到它花费了 30% 的时间来执行年轻代 gc。下面的日志片段跨越大约一秒,gc 时间加起来为 0.34 秒。

我的问题是:这是一个问题吗?如果是,是什么原因造成的?

我在 Linux 上运行 jdk 1.6.0_24

1004626.109: [GC 1004626.109: [ParNew: 74847K->5219K(76672K), 0.0838750 secs] 10831779K-
10762151K(11525824K), 0.0841790 secs] [Times: user=0.24 sys=0.00, real=0.09 secs] 
1004626.320: [GC 1004626.320: [ParNew: 73379K->5468K(76672K), 0.0527070 secs] 10830311K->10762874K(11525824K), 0.0529680 secs] [Times: user=0.20 sys=0.00, real=0.06 secs] 
1004626.511: [GC 1004626.511: [ParNew: 73628K->4986K(76672K), 0.0591070 secs] 10831034K->10763002K(11525824K), 0.0593820 secs] [Times: user=0.20 sys=0.00, real=0.05 secs] 
1004626.698: [GC 1004626.698: [ParNew: 73146K->5611K(76672K), 0.0523060 secs] 10831162K->10764169K(11525824K), 0.0525820 secs] [Times: user=0.21 sys=0.00, real=0.05 secs] 
1004626.902: [GC 1004626.902: [ParNew: 73771K->6878K(76672K), 0.0653490 secs] 10832329K->10765868K(11525824K), 0.0656210 secs] [Times: user=0.22 sys=0.00, real=0.06 secs] 

最佳答案

不,这不是问题。这意味着您的对象来来去去 - 您在范围内创建它们,使用它们,然后它们才有资格进行 GC。我认为这并不表示有问题。

另一个极端将是一个问题:对象被创建、老化并停留太久。这就是发生内存泄漏和填充 perm 空间的地方。

关于java - 为什么我的 Java 应用程序将 30% 的时间花在年轻代 gc 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10259032/

相关文章:

Java:数组索引越界异常2

java - 我的 Lucene 搜索未返回结果

java - SOLR配置问题

java - java appengine 中的 App Engine application/json 有效负载读取

java - 如何将 solr 日期转换为 javascript 日期?

solr - 通过 Haystack 构建 Solr 索引会引发未知字段错误

java - 我应该(可以吗?)我重写 Robot 类以通过重复的屏幕捕获节省内存,或者 GC 是否足够好?

c# - 为什么 FxCop 将 GC.KeepAlive() 标记为违规?

c# - 在一段代码中暂停 GC

java - 我的 User bean 中的 Spring MVC NotReadablePropertyException