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