垃圾回收机制_第1页
垃圾回收机制_第2页
垃圾回收机制_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

垃圾回收机制1.对象不一定被垃圾回收器回收;2.3.垃圾回收只与内存有关。垃圾回收器只会回收由new关键字分配的内存。对于不是通过new方法来自定义释放。方法不能由程序员调用,只能通过垃圾回收器自动调用。其首先调用该对象的回收对象占用的内存。finalize()方法不应该作为通用的内存清理方法,而且finalize()方法只与内存及其回收有关。方法只用来回收通过特殊方式某种创建对象方式以外的方式)为对象分配的存储空间。这种特殊的方式主要出现在使用“本地方法调用”的情况下。总之,不要过多的使用方法,因为方法不是进行普通清理工作的场所,它只是用来清理那些特殊的对象的。Java中的垃圾回收不等于C++中的析构函数。无论是“垃圾回收”还是方法,在程序运行时都不能保证他们被执行,因为Java虚拟机(JVM)在没有面临内存耗尽的情况下,是不会浪费时间去执行垃圾回收来恢复内存的。finalize()方法的另一个用法:finalize()方法的执行并不依赖于每次都要对finalize()方法进行调用。也就是说finalize()方法不由程序员自己调用,而是依赖于垃圾回收器。这种特性可以用于终结条件验证。{){=Book(truenovelBook(truegc}}{=false;Book(checkedOut){this.=checkedOut;}{=;}{(checkedOut){":!"}}}用于强制进行终结操作,也就是通知垃圾回收器可以进行一次垃圾回收了,但是垃圾回收器到底进不进行垃圾回收是不可预料的。如果不使用,当程序分配大量存储空间而导致垃圾回收器动作执行时,也会调用方法。垃圾回收器的工作流程:Java中的所有对象除基本类型外都是分配在堆上的。虽然在堆上分配对象的代价很高昂,但是在Java垃圾回收器的协同下,可以实现和栈上分配空间一样的速度。Java中堆的实现类似于传送带,每分配一个新对象,它就往前移动一格,再加上垃圾回收器的接入,可以实现一边回收空间,一边使堆中的对象紧凑排列,从而实现高速、有无限空间可供分配的堆模型。垃圾回收机制的实现方式:1.引用计数法。引用计数法是一种简单但速度很慢的垃圾回收技术。每个对象都含有一个引用计数器,当有引用连接到该对象时,引用计数加1,当引用离开作用于或被置为null时,引用计数减1。2.自适应垃圾回收技术。对于任何存活着的对象,一定能在堆栈区或静态数堆栈和静态区中的所有引用,就能找到哪些对象存活着。停止-复制和标记--复制不是在后台运行的,标记-清扫也一样。停止-复制:先暂停程序运行,然后将所有的存活对象从当前堆复制到另外一个堆,然后垃圾回收器回收原来的内存。总结:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论