javaw.exe占用了我的内存?

5
最近,javaw.exe进程占用了我的电脑,并由于低内存错误迫使我退出Eclipse和其他应用程序。请注意,我的系统并没有达到最大限制,我只是在处理一些基本的Java程序,并且最多同时打开2-3个Eclipse选项卡。
我有大约40-50个这些javaw.exe进程,每个进程占用22K-26K的RAM,这最终占用了我机器8GB RAM的70-80%。这非常令人沮丧,因为我无法像这样工作。我想知道是否还有其他人遇到过此类情况,并知道如何解决此问题?

这种行为对我来说看起来像是病毒。 - Rafael
可能有一些程序仍在后台运行。 - Shashank Kadne
你能够确定它们何时开始吗? - dann.dev
1
我不认为这是病毒,因为我的反病毒软件返回的结果良好,而且我已经遇到这个问题几周了,最近我运行了系统恢复来尝试修复它,但没有帮助。 - AnchovyLegend
当我在Eclipse中编译和运行Java程序时,它们似乎会启动,并不总是在关闭应用程序时进程也随之关闭。 - AnchovyLegend
我的Eclipse中没有"帮助"->"性能"选项... - Andrew DeFaria
4个回答

10

你可能一遍又一遍地从eclipse启动同一个程序,而这些程序从未退出。切换到 调试 视角,并查看 调试 视图。杀死所有不应再运行的进程。

话虽如此,50 * 26KB 距离 8GB * 80% 非常非常遥远。而且我怀疑任何Java程序都不可能像26KB那样轻巧。


1
但是我确实退出了这些程序。然而,当我去“Windows任务管理器”时,在我从eclipse退出Java程序后,进程并没有消失... - AnchovyLegend
1
如何退出它们?您是否在调试视图中按下红色的方形“终止”按钮?当调用System.exit()时,Java程序将终止。例如,如果您只关闭Swing / AWT应用程序的主窗口,则不会退出。 - JB Nizet
1
或许是一些非守护线程在后台继续运行,阻止这些程序退出。 - assylias
1
我明白了,那就是我的问题根源... 以前当我在Java应用程序上点击“x”时,它似乎会自动消除该进程,但现在情况并非如此。从现在开始我会使用红色的终止按钮...谢谢! - AnchovyLegend
3
或者您可以修复程序,确保在窗口关闭时调用System.exit。请参阅http://docs.oracle.com/javase/6/docs/api/javax/swing/JFrame.html#setDefaultCloseOperation%28int%29。 - JB Nizet
2
要么在主窗口关闭时进行System.exit调用,要么识别继续运行的后台线程,并想出一种有序终止它们的方法,当主窗口关闭时。当所有线程终止时,JVM将退出。 - Konstantin Komissarchik

2

这通常发生在多线程操作时。请确保通过调用thread.interrupt()停止您创建的所有线程,然后再结束应用程序。这将从任务管理器中删除javaw.exe - 希望这对您有所帮助。


1
如果您正在使用JFrame,请尝试以下操作:
Main frame=new Main();//Main class extends JFrame.
frame.setdefaultcloseoperation(JFrame.EXIT_ON_CLOSE);

0
通常每个Eclipse实例应该只有一个javaw.exe进程。因此,请使用进程资源管理器检查它们是否实际属于Eclipse,而不是其他后台/僵尸程序。
如果您想减少javaw.exe的内存占用,可以使用帮助 -> 性能 -> 立即减少内存
请注意,这将仅减少实际Eclipse的javaw.exe进程使用的内存。

1
@Majid Laissi,在Eclipse Mars.1(4.5.1)上,也没有“Help -> Performance”选项。为什么你的Eclipse有这个选项? - GSP
是的,那已经在很久以前被删除了。 - Majid Laissi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接