Java PMD内存泄漏

Java PMD内存泄漏,java,windows,eclipse,pmd,java-memory-leaks,Java,Windows,Eclipse,Pmd,Java Memory Leaks,在windows上的eclipse中使用pmd时,我有一个严重的内存泄漏。我导入了一堆大型maven项目。m2e和编译PMD启动后。然后,对于工作区中的许多(大约50个)项目,它最终在大约8-10个eclipse作业实例中并行运行。然后进程的大小会无限增长,直到机器上的虚拟内存耗尽(大约12GB),PC完全冻结 eclipse.ini中的我的内存配置: -Xms256m -Xmx2G -Xss2m -Xverify:none -XX:+UseG1GC -XX:+UseStringDeduplic

在windows上的eclipse中使用pmd时,我有一个严重的内存泄漏。我导入了一堆大型maven项目。m2e和编译PMD启动后。然后,对于工作区中的许多(大约50个)项目,它最终在大约8-10个eclipse作业实例中并行运行。然后进程的大小会无限增长,直到机器上的虚拟内存耗尽(大约12GB),PC完全冻结

eclipse.ini中的我的内存配置:

-Xms256m
-Xmx2G
-Xss2m
-Xverify:none
-XX:+UseG1GC
-XX:+UseStringDeduplication
-XX:MaxMetaspaceSize=1G
这里2GB的堆大小限制似乎没有多大影响。然后我怀疑分配的vm内存不是java堆,而是类装入器元空间或来自本机dll

我的机器上有32GB内存。使用java 1.8.0_121

这是一个vmmap快照,在进程变得危险的大之前不久,我必须杀死它:

我尝试对进程运行
jcmd PID GC.class_stats
,但我看不出这里有什么问题,因为总字节数只有~1.4 GB:

1636:
Index Super  InstBytes KlassBytes annotations    CpAll MethodCount Bytecodes MethodAll    ROAll     RWAll     Total ClassName
    1    89  141004480        560           0     1296           7       149      2176      880      3464      4344 java.util.HashMap$Node
    2    -1  131125856        480           0        0           0         0         0       24       584       608 [I
    3    89  129135744        624           0     8712          94      4623     58024    12136     56304     68440 java.lang.String
    4    -1  111470376        480           0        0           0         0         0       24       584       608 [B
    5    -1   94462520        480           0        0           0         0         0       24       584       608 [C
    6    -1   55019976        480           0        0           0         0         0       32       584       616 [Ljava.util.HashMap$Node;
    7    -1   53828832        480           0        0           0         0         0       24       584       608 [Ljava.lang.Object;
    8    89   51354560        504           0     9016          42      2757     23352     6976     26704     33680 java.net.URL
    9    89   48028392        504           0      544           1        20       496      216      1520      1736 java.util.LinkedList$Node
   10 28783   40910880       1000           0     6864          51      3951     35648     8664     35792     44456 java.util.HashMap
...snip...
48234 48225          0        608           0      288           2        10       288      160      1152      1312 sun.util.resources.en.CalendarData_en
48235 48225          0        608           0      360           2        27       304      200      1200      1400 sun.util.resources.en.CurrencyNames_en_US
48236 48225          0        608           0      288           2        10       288      160      1152      1312 sun.util.resources.en.LocaleNames_en
48237 48229          0        608           0      288           2        10       304      176      1152      1328 sun.util.resources.en.TimeZoneNames_en
48238 29013          0        520           0      272           2         5       592      160      1352      1512 sun.util.spi.CalendarProvider
48239    89          0        512           0      336           3         5       440      240      1184      1424 sun.util.spi.XmlPropertiesProvider
48240    89          0        560           0      440           5        16       760      488      1504      1992 sun.util.xml.PlatformXmlPropertiesProvider$EH
48241    89          0        528           0     1040           3        71       520      464      1840      2304 sun.util.xml.PlatformXmlPropertiesProvider$Resolver
48242    89          0        552           0      520           3        19       512      456      1392      1848 uescape.view.UnicodeEscapeView$1
48243    89          0        552           0      520           3        19       512      456      1392      1848 uescape.view.UnicodeEscapeView$2
        1374367440   32457872      432408 90295960      502480  22001616 144854704 85034192 198366896 283401088 Total
            485.0%      11.5%        0.2%    31.9%           -      7.8%     51.1%    30.0%     70.0%    100.0%
Index Super  InstBytes KlassBytes annotations    CpAll MethodCount Bytecodes MethodAll    ROAll     RWAll     Total ClassName

我没有太多在Windows上评测本机进程的经验。我如何确定是什么在无休止地分配这么多内存?

这确实是pmd eclipse插件的问题。 看

最新版本包含修复程序


可通过更新站点获取该信息:

您有哪个版本?使用PMD eclipse插件4.0.15、PMD 5.3.5和maven PMD插件3.6,检查PMD和插件的bug跟踪器是否存在已知问题(例如)。我看到现在所有的都有些过时了,可能需要升级,特别是pmd本身,我只需要检查一下与氧气2的兼容性。Eclipse Marketplace的链接似乎没有最新的pmd Eclipse插件:@scorciatoia不要担心Eclipse Marketplace-只需使用您评论中的链接从github下载pmd Eclipse插件的4.0.17版即可。4.0.17不是一个版本;-)我将pmd eclipse插件升级到4.0.16.v20180412-0833,其中包含pmd 6.2.0,但没有帮助。