我有一个全天候运行的Java应用程序,它有一个连接MySQL服务器和一个TimerTask(运行Akka).我遇到的OutOfMemoryError一周后或更少的操作和堆转储显示LinkedHashMap中有超过4百万的字符串,他们使用800 MB堆java.io.DeleteOnExitHook的GC根.
所有字符串都类似于/tmp/jar_cachexxxx.tmp
这个问题在运行OpenJDK Runtime Environment(build 1.8.0_101-b13)的两台机器上是一致的.JDBC驱动程序是maven"mysql-connector-java"版本5.1.38上提供的驱动程序,我使用的是连接池BoneCP,版本0.8.0.
有人知道这个漏洞吗?
更新 - 2016年12月5日
在我们更改了项目的编译器之后,问题已经解决了.我们注意到eclipse jar创建者是唯一与jar缓存有任何关系的东西,所以在用maven编译项目之后,内存泄漏就消失了.