对于GC来讲,当程序员建立对象时,GC就开始监控这个对象的地址、大小以及使用状况。一般,GC采用有向图的方式记录和管理堆(heap)中的全部对象。经过这种方式肯定哪些对象是"可达的",哪些对象是"不可达的"。当GC肯定一些对象为"不可达"时,GC就有责任回收这些内存空间。程序员
能够。post
程序员能够手动执行System.gc(),通知GC运行,可是Java语言规范并不保证GC必定会执行。强制执行垃圾回收:System.gc()。Runtime.getRuntime().gc()线程
静态类:static的是属于类的,而不是属于对象的,至关因而全局的,不可能被回收对象
静态变量自己不会被回收,可是它所引用的对象应该是能够回收的。内存
gc只回收heap里的对象,对象都是同样的,只要没有对它的引用,就能够被回收(可是不必定被回收). 对象的回收和是否static没有什么关系!作用域
如:static Vector pane = new Vector(); pane = null; 若是没有其它引用的话,原来pane指向的对象实例就会被回收。get
Java程序员在编写程序的时候再也不须要考虑内存管理。因为有个垃圾回收机制,Java中的对象再也不有"做用域"的概念,只有对象的引用才有"做用域"。垃圾回收能够有效的防止内存泄露,有效的使用可使用的内存。垃圾回收器一般是做为一个单独的低级别的线程运行,不可预知的状况下对内存堆中已经死亡的或者长时间没有使用的对象进行清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或全部对象进行垃圾回收。内存管理