⑴ 在java中如何主动的去释放无用对象,从而使得系统GC可以尽早释放内存在编程上需要注意些什么
1、与C语言相比,垃圾回收器是JAVA的一大优势。其功能在于自动释放举余衫违背占用的内存,但何时去释放有其自身的算法,不支持使用者直接释放内存。
2、使用者所能做的只是使用System.gc()通知JAVA垃圾回收器在“合适”的时间逐个使用Object.finalize()清除未为程序引用的各个对象。
3、使用着调用Object的finalize()方法不会启动任何作用,只能是重写该方法执行写对象销毁前应做的操作,如关闭IO等。
4、使用者还可以做到的就是指定那些对象正腔占用的毁键内存会被释放,方法就是将对象的值赋为NULL。
5、编程用使用者应做的就是提高对象的复用性,尽量少的声明对象。
⑵ 如何手动释放一个java线程占用的资源
建议你声明一个boolean变量替换while(true)中的true,因为这样就可以控制线程了,然后不必等到主程序结束
⑶ java中如何关闭一个窗口就完全释放它所占的资源但不终止整个程序(程序由多个窗口)
根据Java的垃圾回收机制:垃圾回收回收的是无任何引用的对象占据的内存空间
所以你只要采用匿名类创建打开的窗口并调用System.gc() 或Runtime.getRuntime().gc() 就可以啦
在要创建窗口的地方这样写:
new frame().setVisible(true);
System.gc() ;
当你再次打开同样的窗口时,又会执行new frame().setVisible();重新创建一个新的窗口,原来的自然就变成无任何引用的对象了,随即就会被JVM垃圾回收机制回收掉了
注意:调用System.gc()用于显式通知JVM可以进行一次垃圾回收,但真正垃圾回收机制具体在什么时间点开始发生动作是不可预料的
⑷ java 什么资源需要手动释放
1、文件流要释放
2、数据库连接资源要释放
3、在结合使用hibernate时,session要释放
在使用的时候,java的垃圾回收一般不用手动释放,但是可以调用方法进行调用以实现垃圾回收,在某种特定情况下会使用到