当前位置: 首页 > 面试题库 >

Java类(PermGen)内存泄漏(Web应用程序)-通用解决方案?

武彭薄
2023-03-14
问题内容

我知道,我的烫发发生了内存泄漏。使用jvisualvm进行的分析表明,在进行热部署时(例如,在不停止JVM的情况下停止和启动应用程序,在tomcat,WebSphere,WebLogic等中),PermGen空间正在不断增加。

阅读,使用jhat和其他高级工具后,我意识到我可能WebAppClassLoader在其父类加载器的某个地方引用了该类。

即使我在jhat上进行了一些基于JavaScript的大规模查询,我也无法将其固定下来

是否没有一个简单的实用程序可以找出谁负责您的类加载器而不被垃圾收集(从而允许对其加载的类进行垃圾收集)?

我尝试了JProfiler,jvisualvm,jat和许多Google

给所有LMGTFY朋友-我花了一天半的时间阅读带逐步说明的论坛,没有运气。我正在寻找输出的实用程序或代码:

Y类的对象X是防止删除类的唯一GC根。


问题答案:

有一个不令人满意但很简单的解决方案:不要在生产环境中进行热部署。您可以设置一个由两个servlet容器组成的集群,然后通过重新启动来一次更新一个。



 类似资料:
  • 我有一个运行在Tomcat7上的Java web应用程序出现内存泄漏。在负载下(使用JConsole确定),应用程序的平均内存使用量随时间线性增加。在内存使用达到稳定期后,性能会显著下降。响应时间从大约100ms到[300ms,2500ms],所以这实际上导致了真正的问题。 使用VisualVM,我看到至少一半的内存被字符数组(即char[])使用,而且大多数字符串(每个实例的数量大致相同,为30

  • 问题内容: 我有一个Python程序,它运行一系列实验,没有打算从一个测试存储到另一个测试的数据。我的代码包含一个我完全找不到的内存泄漏(我已经查看了内存泄漏的其他线程)。由于时间限制,我不得不放弃寻找泄漏的机会,但是如果我能够隔离每个实验,该程序可能会运行足够长的时间以产生所需的结果。 在单独的线程中运行每个测试是否有帮助? 还有其他隔离泄漏影响的方法吗? 具体情况详 我的代码分为两部分:实验运

  • 在阅读了大量有关MAT的内容后,我使用我的生产堆转储来分析内存泄漏问题。下面是泄漏报告错误: 线程org.apache.tomcat.util.threads.taskthread@0x6d8be0a30 http-bio-8443-exec-115保留总大小为3,695,816,440(89.03%)字节的局部变量。 内存累积在“'<'System class Loader'>”加载的“java

  • 本文向大家介绍PHPExcel内存泄漏问题解决方法,包括了PHPExcel内存泄漏问题解决方法的使用技巧和注意事项,需要的朋友参考一下 使用 PHPExcel 来生成 excel 文档是比较消耗内存的,有时候可能会需要通过一个循环来把大数据切分成若干个小的 excel 文档保存来避免内存耗尽。 然而 PHPExcel 存在 circular references 的情况(貌似在最新的 1.6.5

  • 本文向大家介绍Java 内存泄漏,包括了Java 内存泄漏的使用技巧和注意事项,需要的朋友参考一下 在Java中,垃圾回收(析构函数的工作)是使用垃圾回收自动完成的。但是,如果代码中有引用它们的对象怎么办?它无法取消分配,即无法清除其内存。如果这种情况一再发生,并且创建或引用的对象根本没有被使用,它们就会变得无用。这就是所谓的内存泄漏。 如果超过了内存限制,则程序将通过抛出错误(即“ OutOfM

  • 本文向大家介绍Android Handler内存泄漏详解及其解决方案,包括了Android Handler内存泄漏详解及其解决方案的使用技巧和注意事项,需要的朋友参考一下 关联篇:深入Android的消息机制源码详解-Handler,MessageQueue与Looper关系 关联篇:HandlerThread 使用及其源码完全解析 在android开发过程中,我们可能会遇到过令人奔溃的OOM异