【发布时间】:2017-01-24 16:58:59
【问题描述】:
我有使用 Spring/Hibernate 开发的 Web 应用程序。
当我使用 JProfiler 进行分析时,它显示大约 9k WebAppClassLoader。我们在运行时执行一些常规表达式,将计数增加到 20K。
我这样做是为了找到泄漏点。
- 已部署应用程序
- 执行一些测试运行
- 重新部署应用程序
- 从 JProfiler 触发 GC
WebAppClassLoader 的数量永远不会减少,PermGen 也是如此。当我做 HeapWalk 时,它显示许多类不确定哪个有泄漏。
- 我对简单的 Spring MVC 应用程序进行了同样的尝试。也注意到了。是否有任何弹簧属性/配置来解决这个问题。
- 当 groovy 表达式运行时,有什么方法可以在运行时停止加载类
【问题讨论】:
-
你需要将groovy代码的编译结果提取出来。
-
每次重新部署应用程序时都会创建一个 WebAppClassLoader。您是说使用 Groovy 时会获得更多的 WebAppClassLoaders 吗?此外,JProfiler 有一个可能有用的类加载器探针。
标签: java spring-mvc groovy memory-leaks permgen