Java 调查内存泄漏时要查找哪一代?

Java 调查内存泄漏时要查找哪一代?,java,memory-leaks,garbage-collection,Java,Memory Leaks,Garbage Collection,我正在对可能导致服务器停止的潜在内存泄漏进行第一次调查。我从日志中看到以下内容: ... 6676.590: [GC [PSYoungGen: 61432K->3902K(65408K)] 343313K->308460K(384896K), 0.0153165 secs] [Times: user=0.07 sys=0.10, real=0.02 secs] 6684.493: [GC [PSYoungGen: 65406K->3900K(67200K)] 369964K-

我正在对可能导致服务器停止的潜在内存泄漏进行第一次调查。我从日志中看到以下内容:

...
6676.590: [GC [PSYoungGen: 61432K->3902K(65408K)] 343313K->308460K(384896K), 0.0153165 secs] [Times: user=0.07 sys=0.10, real=0.02 secs] 
6684.493: [GC [PSYoungGen: 65406K->3900K(67200K)] 369964K->319251K(386688K), 0.0104186 secs] [Times: user=0.07 sys=0.04, real=0.01 secs] 
6684.503: [Full GC [PSYoungGen: 3900K->0K(67200K)] [PSOldGen: 315351K->256886K(333824K)] 319251K->256886K(401024K) [PSPermGen: 70248K->70248K(116736K)], 0.5965072 secs] [Times: user=0.60 sys=0.00, real=0.60 secs] 
6692.773: [GC [PSYoungGen: 63296K->1160K(62976K)] 320182K->258046K(396800K), 0.0043468 secs] [Times: user=0.04 sys=0.00, real=0.00 secs]
...

让我困惑的是,我应该在哪一代人中寻找内存泄漏?全部的单独或同时?

您只需要在完成GC后查看PSOldGen。保留任何时间长度的对象都将在其中。i、 e.在查找泄漏时,您不需要担心寿命短的物体

如果您认为有泄漏,请查看
jmap-histo:live
,查看哪些对象被保留得最多。您可以使用
jmap-dump:live,format=b,file={filename}
进行完全转储,以查看保留这些对象的原因。您可以使用VisualVM加载此文件。(还可以使用VisualVM触发堆转储)