我有一个在 tomcat 中运行的 java web 应用程序,通过 hibernate 与我的数据库通信。数据库上的字段 is_enabled 在数据库上映射为 TINYINT
,但在 hbm.xml
中映射为 boolean 值:
<property name="isEnabled" type="boolean">
<column name="is_enabled" />
</property>
我知道映射没有任何问题,因为我有另一列是 TINYINT(1) 并映射为 hbm.xml 中的 boolean 值。但是当我添加这个属性时,我的 WAR 没有加载,在 Tomcat 中我得到了几个:
org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [] appears to have started a thread name
[Job_Executor2] but has failed to stop it. This is very likely to
create a memory leak.
知道如何进行调试吗?
最佳答案
I know nothing is wrong with the mapping as I have another column which is a TINYINT(1) and mapped as a boolean in the hbm.xml.
仅凭 boolean 属性本身很难做出评论。或许查看整个 hbm.xml 可能会给出一个想法。此外,是否有代码在您的应用程序(或您的 servlet 或 bean 或您拥有的东西之一)的初始化时执行,正在查看此属性并对其执行某些操作?
极不可能仅此属性是罪魁祸首。内存泄漏(或者你认为是什么根本原因)可能已经存在,并且此属性的存在(以及 hibernate 中的任何代码......或在你的应用程序中)导致过去临界点。
也就是说,罪魁祸首不是这个属性。它只是使现有软件或系统错误显现出来的催化剂。
Any idea how to go about debugging this?
对于此类问题,最好使用专业的($$$)分析工具,如 JProfiler。
但我也使用其他开源或免费工具来解决与内存相关的问题(由 Web 服务、 hibernate 或您拥有的东西引起。)有一些选择。
Eclipse Memory Analyzer - 当我不得不找出代码与 hibernate 交互的一些问题的根源时,这个工具对我来说是天赐之物。
VisualGC和 VisualVM - 这是两个截然不同但密切相关的工具,可以帮助您从根本上解决问题(或至少缩小问题的范围。)
像这样的事情需要多管齐下,您会发现自己使用多种工具来给这只猫剥皮。
给出上面列出的这三个工具。希望他们有所帮助。
关于java - Hibernate映射导致内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20615051/