如果垃圾收集器运行异常,是内存泄漏吗?

mda*_*ina 5 java garbage-collection

我开发了一个J2ME Web浏览器应用程序,它运行正常.我正在测试它的内存消耗.在我看来它有内存泄漏,因为代表内存监视器(无线工具包)消耗内存的绿色曲线在浏览器完成的每7个请求中达到最大分配内存(即687768字节)(即,当最终用户在Web浏览器中从一个页面导航到另一个页面7个页面之后,垃圾收集器运行并释放分配的内存.

我的问题是:

  • 当垃圾收集器每7页导航自动运行时,它是一个内存泄漏吗?
  • 我是否需要每次请求手动运行一次垃圾收集器(System.gc())以防止达到最大分配内存?

请指导我,谢谢

Cra*_*lus 3

要确定是否是内存泄漏,您需要进行更多观察。

根据您的描述,即一旦达到最大内存,GC 就会启动并能够释放内存供您的应用程序运行,听起来并不像是存在泄漏。

另外你不应该自己调用GC,因为

  1. 这只是一个指示
  2. 可能会影响底层算法,从而影响其性能。

相反,您应该关注为什么您的应用程序在如此短的时间内需要如此多的内存。