有什么办法可以查出内存泄漏(OutOfMemory)发生在什么地方?
开发的系统内有若干个进程一直在运行,进行周期性的监测和操作,可是发现运行一个小时左右就发生OutOfMemory 错误,进程不再运行。
用 -verbosegc 观察,发现内存占用量一直都在上升,直到最后几乎用完64M为止。
数据库的操作是用hibernate来实现的,进程要做的事情是查询数据表记录,生成文件,再发送出去,不知道什么地方有可能导致内存泄漏?
会出现 WARN : finalizing unclosed session with closed connection
有可能是这个导致的吗?我是用dbcp连接池去管理数据库连接的。
另外,有时即使不发生OutOfMemory的错误,进程都会停止运行,不知道这有可能是因为什么原因?