本帖最后由 苏伯亚 于 2014-4-2 08:34 编辑
JVM垃圾回收机制:Java的堆是一个运行时数据区,类的实例(对象)从中分配空间。Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new、newarray、anewarray和multianewarray等指令建立,但是它们不需要程序代码来显式地释放。
一般来说,堆的是由垃圾回收 来负责的,尽管JVM规范并不要求特殊的垃圾回收技术,甚至根本就不需要垃圾回收,但是由于内存的有限性,JVM在实现的时候都有一个由垃圾回收所管理的堆。垃圾回收是一种动态存储管理技术,它自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能
Finally:Finally语句是为异常处理事件提供的一个清理机制,一般是用来关闭文件或释放其他系统资源。作为try-catch-finally结构的一部分,可以没有Finally语句,如果存在Finally语句,不论try块中是否发生异常,是否执行过catch语句,都执行finally语句这就是两者的作用。
通俗讲finally只是为异常清理垃圾释放资源,而jvm则是释放运行的应用程序建立的所有对象,不能释放程序运行占用的资源。比如异常处理中因为报异常而没有停止运行的程序,这个时候JVM就不能释放这个错误程序占有的资源,而调用finally则可以选择关闭错误程序释放资源。希望可以帮助你。
|