2011-04-02 438 views
6

我正在开发一个使用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内存泄漏或错误?

+0

要做的第一件事:找出哪个Java应用程序(NetBeans,GlassFish,...)由大多数这些过程执行。您可以在终端中使用'ps ax | grep java | sed G'来查找命令行(特别是查看每行的最后一个参数)。 – 2011-04-02 10:55:12

+0

它看起来像父进程是NetBeans。顺便说一下,GlassFish由NetBeans本身启动,所以我无法确定。我将尝试在启动NetBeans之前手动启动GlassFish。 – 2011-04-02 11:12:51

+0

好吧,手动启动glassfish,即使在NetBeans关闭的情况下,我也能立即获得具有50多个线程的java进程。自动柜员机的系统速度不是很慢,但是在使用Netbeans进行几个小时的开发之后,性能仍然会降低。 – 2011-04-02 11:21:33

回答

0

我们对eclipse有类似的问题。我们已经尝试了很多耐心的步骤并解决了一些问题。

编码实践

1)验证DB /休眠相关的会话开放和服务器端代码密切和清理数百不封闭会议的不良做法的实例(这种改善甚至部署性能)

2)验证的IO相关的不良做法,并清除它们(这甚至提高部署性能)

Lighweight IDE

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

实施例 -

一个)GWT开发 - 一个IDE实例只有GWT dev的需要的插件仅

b)中代码重构 - 一个IDE实例具有FindBugs的,PMD,安装的CodePro

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

而正如utsun所说 - 你很幸运,对于我们中的一些人来说,内存不足的情况经常发生在原始硬件上。

我很想让别人分享一些技巧来收集或寻找IDE的内存优化,除了抛出更多的硬件。例子 - 一个eclipse或netbeans只有gwt/maven/svn绝对必要的插件。抛出所有其他噱头的东西。

+0

这个问题有点过时了,但这些看起来仍然很不错,所以我会将您的答案标记为正确答案。谢谢! – 2012-12-21 13:54:20