Mac OSX 10.6.7上进程'java'的大量线程和内存使用情况

时间:2011-04-02 10:42:24

标签: java macos gwt glassfish netbeans-6.9

我正在使用java + gwt和NetBeans 6.9.1 + Glassfish 3.0.1开发Web应用程序。经过几个小时的开发后,我的系统性能下降,所以我总是检查Activity Monitor是否有一些进程获得所有内存或cpu。我总是注意到一个名为'java'的进程,它产生了大约50-60个线程。我的系统非常慢,直到我杀死它们,然后我才能正常工作。

我在开发期间使用NetBeans调试模式,但即使我停止调试模式,java进程仍会降低系统性能,直到我杀死它。我有时也经历过“java.lang.OutOfMemoryError:Java堆空间”错误,它发生在几个小时之后(假设是12-16)我的NetBeans信息被打开了(这种情况发生在我的Linux环境中同样的NetBenas版本) )。在这种情况下,我需要关闭并重新打开它以使其再次编译/工作。

任何人都遇到过相同的问题和/或知道如何避免这些问题? 你认为这个问题可能是由我正在开发的应用程序中的某种问题引起的,还是可能是Netbeans内存泄漏或错误?

1 个答案:

答案 0 :(得分:0)

我们与eclipse有类似的问题。我们通过以下步骤耐心地尝试并解决了一些问题。

编码惯例

1)验证了服务器端代码上的db / hibernate相关会话打开和关闭,并清理了数百个非关闭会话的不良实践实例(这样可以提高部署性能)

2)验证了io相关的不良做法并进行了清理(这样可以提高部署性能)

轻量级IDE

1)确保IDE只有您需要的插件。可以为任务定制多个IDE安装。

示例 -

a) GWT Dev - 一个IDE实例只有GWT dev所需的插件

b)代码重构 - 一个IDE实例安装了findbugs,PMD,CodePro

注意:始终以最少的IDE设置(包含和不包含hello world项目代码)开始。配置文件和 检查某些插件在实例化或常规使用时是否泄漏内存

正如utsun所说 - 你很幸运,因为我们中的一些人坚持使用原始硬件,因此内存不足会发生更多事情。

我希望让其他人分享一些技巧来收集或寻找IDE的内存优化,而不是投入更多的硬件。示例 - 仅使用gwt / maven / svn的绝对必要插件的eclipse或netbeans构建。抛出所有其他花哨的东西。