一个简单但你很可能不知道的问题! byte[] buf = new byte[1024];buf = null;//这样buf原来的内存就已经是可以被释放了,至于什么时候才真正被释放那是JVM内部的事情,你一般不需要关心 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 gc但是需要注意Java虚拟机的内存管理机制不完善。 只要你不用了,没有变量引用你的数组了,Java 会自己释放它所占用的空间的。但具体什么时候释放,就看JVM什么时候高兴了 看看这个http://www-900.ibm.com/developerWorks/cn/java/l-JavaMemoryLeak2/index.shtml就会明白了 ChDw(米) ,一个数组如何能用一个null释放呢?对象才能吧。Java虚拟机的内存管理机制不完善这一句我很赞同,对象可以用null释放,可释放后对象还存在,这时可以用GC负责回收。 对于Java来说 数组同样是一个对象!你完全可以将String[] arr 强制转换成为Object, Java虚拟机的内存管理机制并不是不完善,== null之后,没有其它对象引用到了原来的对象了JVM就会知道这个对象已经可以释放,在JVM进行GC的时候才真正释放它,这个本来就是JVM的做法当然,JVM的回收效率有些时候不太高这个是事实,不过目前的状况已经有比较大的提高了。 ChDw(米) 说的很对,你只需要将对象的引用关系给打断你的事情就完成了,至于是否真正回收如果仅做一个设置为null时可以肯定的说没有回收,但是我们只有先打断对象引用关系jvm才会回收我们设置的对象。 System.gc();但java的机制是即使你强制启动gc,通知gc运行,也不能保证gc一定会执行。 ChDw(米) 说的很对,你只需要将对象的引用关系给打断你的事情就完成了,至于是否真正回收如果仅做一个设置为null时可以肯定的说没有回收,但是我们只有先打断对象引用关系jvm才会回收我们设置的对象。System.gc();但java的机制是即使你强制启动gc,通知gc运行,也不能保证gc一定会执行。 System.gc()不能使jvm直接进行垃圾回收吧,jvm还是会等到它认为这个对象已经没用了才会自动收会内存啊如果是一个类对象可以调用finalize()方法,好象c++里的delete的作用,释放内存finalize—方法名。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。 map<k,v> js如何获取action发到jsp中的对象 Struts2+spring+hibernate 异常 问个基础问题,关于属性做用域 运行tomcat5.5时的问题,高手解决下 spring2.0 要导入那些jar包 写了个加载图标的文件,可是怎么也显示不出图标出来,请高手指点一下,谢谢 jboss3.2.1-tomcat+oracle8.1.6 关于cmp键值自动增长的问题 我发现CSDN的菜鸟太多了,高手太少 五子棋代码求解惑 关于RMI的一个问题. 我电脑里安了一个这样的软件,请问这是人们说的WebLogic 8.1吗?我是菜鸟,请别笑我啊!
http://www-900.ibm.com/developerWorks/cn/java/l-JavaMemoryLeak2/index.shtml
就会明白了
Java虚拟机的内存管理机制不完善这一句我很赞同,对象可以用null释放,可释放后对象还存在,这时可以用GC负责回收。
你完全可以将String[] arr 强制转换成为Object,
JVM就会知道这个对象已经可以释放,在JVM进行GC的时候才真正释放它,这个本来就是JVM的做法当然,JVM的回收效率有些时候不太高这个是事实,不过目前的状况已经有比较大的提高了。
但java的机制是即使你强制启动gc,通知gc运行,也不能保证gc一定会执行。
System.gc();
但java的机制是即使你强制启动gc,通知gc运行,也不能保证gc一定会执行。
如果是一个类对象可以调用finalize()方法,好象c++里的delete的作用,释放内存finalize—方法名。Java技术允许使用finalize()方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在Object类中定义的,因此所有的类都继承了它。子类覆盖finalize()方法以整理系统资源或者执行其他清理工作。finalize()方法是在垃圾收集器删除对象之前对这个对象调用的。