[问题] memory leak in c++ & java

楼主: ireullin (raison detre)   2015-06-18 11:13:07
请问一下各位
关于memory leak的情形
在c/c++的状况中
如果配置了内存但是没有释放
最后该程式结束后
内存是否还会归还作业系统
还是从此这段内存就无法再使用
直到下一次的作业系统重新开机
在早期公司的前辈们都是这样说的
但是后来看了一些文章之后
好像并不是这样
而java中的如果产生了memory leak
通常是该物件已经没有在使用
但是有其他的物件还参照着这个指标的状况
造成GC无法正常回收
请问在何种状况下内存才会归还
1. 该java程式结束后
2. 整个jvm结束
3. 必须等到作业系统重开
我在网络上查了很多
但是各家说法好像都不一样
所以想请问一下大家的意见
作者: ctrlbreak   2015-06-18 11:21:00
两个问题都是看作业系统, 很很早期的作业系统不会回收应用程式不正常归还的话都是要等作业系统重开.
作者: yoshilin (明明可以靠脸吃饭)   2015-06-18 15:54:00
jvm会自己作回收,c++可以测试看看
作者: Killercat (杀人猫™)   2015-06-18 15:57:00
这不叫leak 这叫做设计错误 请用weak reference
作者: ctrlbreak   2015-06-18 19:35:00
java写很烂, JVM也不见得可以正常回收. 最后还是得关掉JVM
作者: Dnight (暗夜)   2015-06-19 09:56:00
都已经不用写指令还内存了你还可以把内存拿着手不给还其实也是一种才能阿...
作者: Killercat (杀人猫™)   2015-06-19 15:32:00
其实还满简单的 尤其爱用singleton的里面放个list一直堆垃圾就会出包了....不需要啥才能,一堆烂code都这样写....
作者: joyolkreg (阿华)   2015-07-03 23:55:00
应该厘清的是 memory leak 怎么发生,才来讨论它的归还比如 JavaSE 1.6 的 String.subString() 就必须等所有参考到原字串的物件都被回收才会释放内存

Links booklink

Contact Us: admin [ a t ] ucptt.com