我正在开发一个使用java + gwt和NetBeans 6.9.1 + Glassfish 3.0.1的Web应用程序。经过几个小时的开发,我的系统性能下降,所以我总是检查活动监视器,如果某个进程获取所有内存或cpu。我总是注意到一些名为'java'的进程,它产生了大约50-60个线程。我的系统非常慢,直到我杀死它们,然后我才能正常工作。Mac OSX上进程'java'的线程和内存使用量很大10.6.7
我在开发过程中使用NetBeans调试模式,但即使停止调试模式,java进程仍会使系统性能下降,直到我终止它为止。我也经常遇到“java.lang.OutOfMemoryError:Java heap space”错误,它会在几个小时后(比如说12-16)发生,我的NetBeans istance被打开了(这发生在我的Linux环境中同样的NetBenas版本中)。在这种情况下,我需要关闭并重新打开它才能再次编译/工作。
任何人都经历过相同的问题和/或知道如何避免它们? 您认为这个问题可能是由我正在开发的应用程序中的某种问题引起的,或者可能是Netbeans内存泄漏或错误?
要做的第一件事:找出哪个Java应用程序(NetBeans,GlassFish,...)由大多数这些过程执行。您可以在终端中使用'ps ax | grep java | sed G'来查找命令行(特别是查看每行的最后一个参数)。 – 2011-04-02 10:55:12
它看起来像父进程是NetBeans。顺便说一下,GlassFish由NetBeans本身启动,所以我无法确定。我将尝试在启动NetBeans之前手动启动GlassFish。 – 2011-04-02 11:12:51
好吧,手动启动glassfish,即使在NetBeans关闭的情况下,我也能立即获得具有50多个线程的java进程。自动柜员机的系统速度不是很慢,但是在使用Netbeans进行几个小时的开发之后,性能仍然会降低。 – 2011-04-02 11:21:33