你说的kill掉,可是强行kill掉这个程序,这我不知道!如果是程序正常退出的话,你只要覆盖finalize方法就可以了,你试试看kill掉这个程序,会调用这个方法的吗?
第2个问题吗?运行Java程序应该不会出现这样的情况的,因为Java有Garbage Collection的机制的吗!如果实在系统内存会被占用的越来越多的话,关掉几个程序,再不行,伙计还是多加点内存把!!!
第2个问题吗?运行Java程序应该不会出现这样的情况的,因为Java有Garbage Collection的机制的吗!如果实在系统内存会被占用的越来越多的话,关掉几个程序,再不行,伙计还是多加点内存把!!!
我曾经用过 gc()的方式进行内存的回收,但是没效果!
我不知道,是否当变量new过以后,是否要赋null才能被及时回收掉!
如果是这样的话,我倒觉得c++的自己管理内存的机制还要可取得多,
想用就new,不用就delete掉!关于第一个问题的解决方法,我去try一下先!欢迎大家踊跃发言哦!
从表面上看当你不用一个对象时,在java里和在C++里的操作好像都差不多比如
aObject := null; //java
aObject.delete; //C++
表面上好像都差不多,其实一点也不一样。C++里要复杂的多,这种情况存在于多个指针(引用)指向一个对象时,比如在C++中,如果有二个引用(C++里叫指针? 我不知道叫什么,就都叫引用吧)指向了一个对象,当你delete掉这个对象后,而其它的引用并不知道这个对象已经被delete掉了,所以当你通过其它的引用再使用这个对象时就会出错。 而java不是。当你写 aObject := null; 这句话时,那个对象并没有被释放掉。只是当前的这个引用不再指向它而已。 所以不会影响其它也指向这个对象的引用。 不会引起向C++里的问题。而当指向这个对象的所有的引用都不再指向这个对象时,它才会被归入到垃圾回收器待回收的对象列表里。等待回收。所以我们没有垃圾回收机制的程序语言里所面对的困难不是 "忘记释放掉对象",真正的难点是“何时释放对象”。
这个对象并不一定会被释放。有可能其它地方还有引用指向它。所以你必需保证所有的引用都解除了才行。检查你的程序,如果你弄明白了这个道理,看看是不是程序写的有问题。祝你好运