2 :垃圾回收
2.1 :什么是垃圾
在程序运行的过程中,存在被分配了的内存块不再被需要的情况,那么这些内存块对程序来讲就是垃圾。
产生了垃圾,自然就需要清理这些垃圾,更为重要的是需要把这些垃圾所占用的内存资源,回收回来,加以再利用,从而节省资源,提高系统性能。
2.2 :垃圾回收
- 不再需要的已分配内存应取消分配(释放内存)
- 在其它语言中,取消分配是程序员的责任
- Java 编程语言提供了一种系统级线程以跟踪内存分配
- 垃圾收集
- 可检查和释放不再需要的内存
- 可自动完成上述工作
- 可在 JVM 实现周期中,产生意想不到的变化
许多编程语言都允许在程序运行时动态分配内存,分配内存的过程由于语言句法不同而有所变化,但总是要将指针返回到内存的起始位置,当分配内存不再需要时(内存指针已溢出范围),程序或运行环境应释放内存。
在 C,C++ 或其它语言中,程序员负责释放内存。有时,这是一件很困难的事情。因为你并不总是事先知道内存应在何时被释放。 当在系统中没有能够被分配的内存时,可导致程序瘫痪,这种程序被称作具有内存漏洞。
Java 编程语言解除了程序员释放内存的责任。它可提供一种系统级线程以跟踪每一次内存的分配情况。在 Java 虚拟机的空闲周期,垃圾收集线程检查并释放那些可被释放的内存。垃圾收集在 Java 技术程序的生命周期中自动进行,它解除了释放内存的要求,这样能够有效避免内存漏洞和内存泄露(内存泄露就是程序运行期间,所占用的内存一直往上涨,很容易造成系统资源耗尽而降低性能或崩溃)。
2.3 :提示
(1):在 Java 里面,垃圾回收是一个自动的系统行为,程序员不能控制垃圾回收的功能和行为。比如垃圾回收什么时候开始,什么时候结束,还有到底哪些资源需要回收等,都是程序员不能控制的。
(2):有一些跟垃圾回收相关的方法,比如:System.gc() , 记住一点,调用这些方法,仅仅是在通知垃圾回收程序,至于垃圾回收程序运不运行,什么时候运行,都是无法控制的。
(3):程序员可以通过设置对象为 null(后面会讲到)来标示某个对象不再被需要了,这只是表示这个对象可以被回收了,并不是马上被回收。
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 | |
全国职称计算机考试速成过关系列套装:W .. 定价:¥133 优惠价:¥133.0 更多书籍 |