我用的myeclipse6.0,运行的时候有一个javaw.exe,描述是Java(TM) 2 Platform Standard Edition binary,平时占150M左右内存,
当运行一个java应用的时候,又会多出来一个javaw.exe进程,描述是Java(TM) Platform SE binary,占用的内存越来越多,最后一直到了1个G,而我的运行参数是
-Xms128m -Xmx128m,最后的结果就是电脑的物理内存被占用99%左右的时候,程序报out of memory异常,java heap space。
我用Jprofiler进行了测试,发现heap的垃圾回收一直很正常,占用的heap空间一直在0-128M之间不停摆动,应该没有问题,那么那个1G的内存是怎么消耗出来的呢?
------解决方案--------------------------------------------------------
正常, 能比QQ占用内存多的就是Java了.
------解决方案--------------------------------------------------------
java运行内存占用应该和你程序有关系,在程序中java类new的越多消耗内存就越多,所以在写代码的时候不要滥用new
------解决方案--------------------------------------------------------
------解决方案--------------------------------------------------------
Javaw进程是标准Eclipse所用编译及运行Java程序时所用进程。由于Eclipse本身比较消耗资源,所以经常会导致该进程过度耗费资源。如果你用过调试程序运行server,你会发现有两个javaw进程存在,此类情况属于正常情况。根据以往使用WSAD的经验,不要轻易修改Eclipse的运行参数,除非你对操作系统特别了解。此类问题有可能是由于修改运行时参数导致,建议恢复默认参数。如果问题仍存在,可能是由于机器配置比较低。
------解决方案--------------------------------------------------------
学习了
------解决方案--------------------------------------------------------
不知道楼主说的运行参数 -Xms128m -Xmx128m 指的是前面那个 myeclipse6.0 的进程还是后面运行应用程序那个 javaw 进程?
如果是后者的话,按说无论如何 javaw.exe 占用的内存不会一直涨到 1G,除非是虚拟机的 BUG。
------解决方案--------------------------------------------------------
剩下的是jvm和栈上的内存
------解决方案--------------------------------------------------------
恭喜恭喜,应该是你的程序本身有内存泄露 ~~~
------解决方案--------------------------------------------------------
难道是bug?没碰到这样的情况
------解决方案--------------------------------------------------------
估计是new得太多,如果有引用一直向对象,对象是不会被回收的。
仔细看看代码吧。
------解决方案--------------------------------------------------------
经常卡,很晕的~~