懂JAVA的大虾们,帮帮忙,JVM不释放内存,为什么

来源:百度知道 编辑:UC知道 时间:2024/07/02 12:43:47
JAVA程序运行之后一直消耗内存,即便JAVA程序停止之后,JVM也不释放内存,内存一直在减少,为什么?
这里声明一下,我的程序可以正常运行,只不过在运行期间,内存一直在消耗,即使我把程序停了,系统也不释放内存。程序没有外部调用,难道真没有人碰见过这种问题么,谁知道对IBM的JVM 进行调优?

IBM关于内存泄漏的文章:
1)http://www.ibm.com/developerworks/library/j-leaks/index.html
2)http://www.ibm.com/developerworks/cn/java/l-JavaMemoryLeak/

第一篇结尾有提到预防泄漏的方法:
a)注意集合类(比如 Hashtable 和 Vector);尤其是声明为 static 的
b)记得移除不再需要的事件/组件监听器
c)很多类都有引用类型的成员变量;不再需要这些成员变量引用的对象时,把它们设为 null

程序没有外部调用,把程序停了,系统也不释放内存?
怎么可能?
最好代码能让大家看看。

开机后别跑java程序看jvm异常不,如果异常就重装jre
运行一个其他的java程序看看是不是异常,如果异常重装jre
重装jre不管用的话就是系统的问题了

有时问题很简单,想都想不到,看看程序中有没有无限循环,像流操作的话就检查一下循环条件有没有输入错误~~~~~

1,如果jvm上只运行这一个程序,那么需要好好考虑下你的把程序停了是什么意思,怎么停的了
2,你的程序是什么程序,如果有涉及web应用和数据库的,停程序之后和它们连接的占用不会释放
3,如果是界面程序,那么界面停止,程序内开的线程等并不是同时停止的。

JVM是不是再跑别的程序啊?
GC又不是立即释放内存的啊?
还有你是不是在你的JAVA里有外部调用啊?有的话GC搞不定啊,只能自己写回收了

JAVA不需要释放