`
qingBYqing
  • 浏览: 49614 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

关于垃圾回收的几个问题

    博客分类:
  • Java
阅读更多
一.为什么要清理

   为了回收程序不在使用的内存,垃圾回收器会负责释放对象占用的内存,在使用程序库时,把一个对象用完后就“弃之不顾”的做法是不安全的,java作为安全性较高的一种高级语言内置了专门的垃圾回收机制来负责收回无用对象占用的内存资源。

要清楚垃圾回收工作方式首先了解下对象在堆和栈存储形式:

堆(Heap):存储对象实例包含对象的实例的属性值,属性类型和对象本身的类型标记(并 不保存对象的方法)

栈(堆栈)(Stack): 存储基本数据类型,指令代码(包过对象方法),常量,对象句柄(对象引用的地址)等。

对象实例在heap中分配好以后,需要在stack中保存一个4字节的heap内存地址,用来定位该对象实例在heap中的位置,便于找到该对象实例。

它们的区别:
      Java 的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。"
     栈的优势:存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 ”
     所以说:   垃圾回收System.gc()是针对堆Heap的,而栈因为本身是FILO协议:first in, last out. 先进后出,能够自动释放。 这样就能明白到new创建的,都是放到堆Heap!

二.何时清理

     java 的垃圾回收器 是不定时的,也许你会发现,只要内存没有频临存储空间用完那一刻,对象占用的空间就总也得不到释放。如果程序执行结束,并且垃圾回收器一直都没有释放你创建的任何对象的存储空间,当随着程序的退出,那些RAM资源也全部交给了操作系统。 其实这样做是恰当的,因为你要知道垃圾回收本身也要使用内存开销,如果在没必要(内存资源充足)使用它来工作的情况下,又何必多此一举呢?

三.finalize()的使用:

 垃圾回收器只知道释放那些由new 分配的内存,所以它不知道该如何释放该对象的“特殊(即通过new 创建对象以外的方式创建对象分配了内存:比如在使用本地方法的情况下,非java代码中出现的对象如:c++)”内存。为了应对这种情况,java 允许在类中定义一个名为finalize()的方法。它的工作原理是这样的:一旦垃圾回收器准备释放对象占用的存储空间,将在这之前调用该对象finalize(),并在下一次垃圾回收动作发生时,才会真正的回收对象占用的内存。所以要是使用了finalize()就意味着在垃圾回收时刻做了一些垃圾回收器无法回收对象特殊内存的清理。

finalize()在以下情况下被调用:

1.所有对象被Garbage Collection时自动调用,比如运行System.gc()的时候.
2.程序退出时为每个对象调用一次finalize方法。
3.显式的调用finalize方法

除此以外,正常情况下,当某个对象被系统收集为无用信息的时候,finalize()将被自动调用,但是jvm不保证finalize()一定被调用,也就是说,finalize()的调用是不确定的,这也就是为什么sun不提倡使用finalize()的原因.
1
0
分享到:
评论

相关推荐

    垃圾回收仿真分析

    垃圾回收的仿真 近几十年来,由于人类的滥砍、滥伐,无情的破坏我们的大自然,地球上能用的资产和能源逐渐地减少,环保团体发现如果我们不再注重保护环境,终有一天我们会失去地球这个美好的家园。所以近年来,环保...

    Java垃圾回收机制

    关于Java垃圾回收机制 垃圾收集的算法分析 垃圾回收的几个特点

    小学校园垃圾分类自查报告.pdf

    小学校园内的垃圾分类可以带来以下几个方面的优势: 1. 环境保护:垃圾分类可以减少垃圾污染,保护环境,提高学生和教师的环境意识和责任感。 2. 节约资源:垃圾分类可以回收有价值的资源,减少浪费,提高资源的...

    垃圾分类通告模板.pdf

    在垃圾分类的过程中,需要注意以下几点: 1. 生活垃圾分类类别:厨余果皮、其他垃圾、玻璃、有害垃圾、废旧衣物和可回收物。 2. 回收运输渠道:厨余果皮(湿)、其他垃圾(干)由当地环卫部门实施干湿分类清运,并...

    垃圾分类微信小程序.zip

    主要用于垃圾分类,微信小程序实现了下面几个功能: 1.文字搜索:根据文本搜索垃圾分类 2.拍照识别:根据图片识别出文本然后搜索垃圾分类 3.语音识别:根据语音识别出文本然后搜索垃圾分类 4.垃圾分类基础数据:...

    智能垃圾分拣系统的设计.pdf

    智能垃圾分拣系统的设计 智能垃圾分拣系统是一种基于STM32微控制器的智能系统,旨在解决...智能垃圾分拣系统是一种高效、环保、智能的垃圾分类系统,能够解决当前垃圾分类问题,提高垃圾回收效率,保护环境和资源。

    扁平化风格垃圾分类我先行主题课件PPT优质模板.ppt

    垃圾分类的重要性体现在以下几个方面: 1. 降低环境污染:垃圾分类可以减少垃圾对环境的污染,保护生态系统和人类健康。 2. 节约资源:垃圾分类可以将废弃物转化为资源,减少资源浪费,实现可持续发展。 3. 提高...

    java垃圾回收以及jvm参数调优概述

    Java技术体系中所提倡的自动内存管理最终可以归结为自动化地解决了两个问题:给对象分配内存以及回收分配给对象...本文主要对java垃圾回收机制以及jvm参数等方面做个综述,也算是自己做开发这几年对这方面的一个总结。

    基于python毕业设计垃圾分类数据系统源码.zip

    垃圾分类的目的是提高垃圾的资源价值和经济价值,减少垃圾处理量和处理设备的使用,降低处理成本,减少土地资源的消耗,具有社会、经济、生态等几方面的效益。利用深度学习方法,基于python设计此垃圾分类系统。 ...

    几个页面垃圾的网页设计作业

    有多垃圾看看就知道了,博客类的吧,反正同学说尽量做的垃圾点,不然会被老师看出来的,哈哈(自己替换图片和改名字吧)

    垃圾分类小知识.pdf

    因此,垃圾回收即环保,又节约资源。 如何垃圾分类?垃圾分类可以分为四大类: 一、可回收垃圾主要包括废纸、塑料、玻璃、金属和布料五大类。纸:主要包括报纸、期刊、图书、各种包装纸、办公用纸、广告纸、纸盒...

    论文研究-垃圾邮件过滤的贝叶斯方法综述.pdf

    目前,基于内容的垃圾邮件过滤问题是Internet安全技术研究的一个重点问题,将机器学习的相关方法应用于垃圾邮件的搜索和判定是进行大量垃圾邮件处理的有效方法。由于贝叶斯分类方法在垃圾邮件处理上表现出了很高的...

    垃圾邮件过滤的贝叶斯方法综述.pdf

    目前,基于内容的垃圾邮件过滤问题是Internet安全技术研究的一个重点问题,将机器学习的相关方法应用于垃圾邮件的搜索和判定是进行大量垃圾邮件处理的有效方法。由于贝叶斯分类方法在垃圾邮件处理上表现出了很高的准确...

    基于PLC 的智能垃圾箱系统的设计.pdf

    智能垃圾箱系统由以下几个子系统组成: * 垃圾识别系统:采用红外传感器和单片机技术,识别垃圾的类型和数量。 * 用户交互系统:采用智能语音系统,实时与用户进行交互和指导。 * 垃圾箱联动系统: 采用PLC控制系统...

    Java垃圾回收算法的简易模拟实现.zip

    Java是一种高性能、跨平台的面向...自动内存管理(垃圾回收): Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的对象,使得开发者不需要手动管理内存,减轻了程序员的负担,同时也减少了内存泄漏的风险。

    基于java技术的智能垃圾分类小程序毕业设计(含论文)

    本论文首先对基于Android的智能垃圾分类系统进行了需求分析,从系统的建设目标、开发环境、设计流程、功能构建等几个方面进行系统的总体设计,使用Java语言设计了基于Android的智能垃圾分类系统软件,主要完成了照片...

    校园垃圾分类管理系统-毕业设计.zip

    Java是一种高性能、跨平台的面向...自动内存管理(垃圾回收): Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的对象,使得开发者不需要手动管理内存,减轻了程序员的负担,同时也减少了内存泄漏的风险。

    垃圾邮件分类器

    能够识别垃圾邮件是一个二进制分类问题,因为邮件被分类为“垃圾邮件”或“非垃圾邮件”,别无其他。 同样,这是一个有监督的学习问题,正如我们知道要预测的那样。 我们将标记的数据集输入模型中,以供将来进行...

    生活垃圾焚烧发电技术的研究及应用.pdf

    城市生活垃圾焚烧发电的意义体现在以下几方面:一是减量化,高温焚烧可有效减小垃圾的体积,减少其占地面积,达到减容的效果,焚烧后垃圾的体积一般情况下仅为其焚烧前的5%~15%。二是无害化,高温燃烧能有效分解...

Global site tag (gtag.js) - Google Analytics