(1) GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会致使程序或系统的不稳定甚至崩溃,Java提供的GC功能能够自动监测对象是否超过做用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操做方法。java
(2) 对于GC来讲,当程序员建立对象时,GC就开始监控这个对象的地址、大小以及使用状况。一般,GC采用有向图的方式记录和管理堆(heap)中的全部对象。经过这种方式肯定哪些对象是”可达的”,哪些对象是”不可达的”。当GC肯定一些对象为”不可达”时,GC就有责任回收这些内存空间。能够。程序员能够手动执行System.gc(),通知GC运行,可是Java语言规范并不保证GC必定会执行。程序员
(3) 垃圾回收是一种动态存储管理技术,它自动地释放再也不被程序引用的对象,当一个对象再也不被引用的时候,按照特定的垃圾收集算法来实现资源自动回收的功能。算法
(4) System.gc();就是呼叫java虚拟机的垃圾回收器运行回收内存的垃圾。编程
(5) 当不存在对一个对象的引用时,咱们就假定再也不须要那个对象,那个对象所占有的存储单元能够被收回,可经过System.gc()方法回收,但通常要把再也不引用的对象标志为null为佳。性能
(6) 每一个 Java 应用程序都有一个 Runtime 类实例,使应用程序可以与其运行的环境相链接。能够经过 getRuntime 方法获取当前运行时。 Runtime.getRuntime().gc();优化
(7) java.lang.System.gc()只是java.lang.Runtime.getRuntime().gc()的简写,二者的行为没有任何不一样。对象
(8) 惟一的区别就是System.gc()写起来比Runtime.getRuntime().gc()简单点. 其实基本没什么机会用获得这个命令, 由于这个命令只是建议JVM安排GC运行, 还有可能彻底被拒绝。 GC自己是会周期性的自动运行的,由JVM决定运行的时机,并且如今的版本有多种更智能的模式能够选择,还会根据运行的机器自动去作选择,就算真的有性能上的需求,也应该去对GC的运行机制进行微调,而不是经过使用这个命令来实现性能的优化内存