`
ican
  • 浏览: 6951 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

垃圾清理势在必行——java垃圾收集算法

阅读更多

垃圾收集算法的核心思想
  Java语言建立了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再使用(引用)的对象。该机制可以有效防范动态内存分配中可能发生的两个危险:因内存垃圾过多而引发的内存耗尽,以及不恰当的内存释放所造成的内存非法引用。
  垃圾收集算法的核心思想是:对虚拟机可用内存空间,即堆空间中的对象进行识别,如果对象正在被引用,那么称其为存活对象,反之,如果对象不再被引用,则为垃圾对象,可以回收其占据的空间,用于再分配。垃圾收集算法的选择和垃圾收集系统参数的合理调节直接影响着系统性能,因此需要开发人员做比较深入的了解。
  2.触发主GC(Garbage Collector)的条件
  JVM进行次GC的频率很高,但因为这种GC占用时间极短,所以对系统产生的影响不大。更值得关注的是主GC的触发条件,因为它对系统影响很明显。总的来说,有两个条件会触发主GC:
  ①当应用程序空闲时,即没有应用线程在运行时,GC会被调用。因为GC在优先级最低的线程中进行,所以当应用忙时,GC线程就不会被调用,但以下条件除外。
  ②Java堆内存不足时,GC会被调用。当应用线程在运行,并在运行过程中创建新对象,若这时内存空间不足,JVM就会强制地调用GC线程,以便回收内存用于新的分配。若GC一次之后仍不能满足内存分配的要求,JVM会再进行两次GC作进一步的尝试,若仍无法满足要求,则 JVM将报“out of memory”的错误,Java应用将停止。
  由于是否进行主GC由JVM根据系统环境决定,而系统环境在不断的变化当中,所以主GC的运行具有不确定性,无法预计它何时必然出现,但可以确定的是对一个长期运行的应用来说,其主GC是反复进行的。
  3.减少GC开销的措施
  根据上述GC的机制,程序的运行会直接影响系统环境的变化,从而影响GC的触发。若不针对GC的特点进行设计和编码,就会出现内存驻留等一系列负面影响。为了避免这些影响,基本的原则就是尽可能地减少垃圾和减少GC过程中的开销。具体措施包括以下几个方面:
  (1)不要显式调用System.gc()
  此函数建议JVM进行主GC,虽然只是建议而非一定,但很多情况下它会触发主GC,从而增加主GC的频率,也即增加了间歇性停顿的次数。
  (2)尽量减少临时对象的使用
  临时对象在跳出函数调用后,会成为垃圾,少用临时变量就相当于减少了垃圾的产生,从而延长了出现上述第二个触发条件出现的时间,减少了主GC的机会。
  (3)对象不用时最好显式置为Null
  一般而言,为Null的对象都会被作为垃圾处理,所以将不用的对象显式地设为Null,有利于GC收集器判定垃圾,从而提高了GC的效率。
  (4)尽量使用StringBuffer,而不用String来累加字符串(详见blog另一篇文章JAVA中String与 StringBuffer)
  由于String是固定长的字符串对象,累加String对象时,并非在一个String对象中扩增,而是重新创建新的String对象,如 Str5=Str1+Str2+Str3+Str4,这条语句执行过程中会产生多个垃圾对象,因为对次作“+”操作时都必须创建新的String对象,但这些过渡对象对系统来说是没有实际意义的,只会增加更多的垃圾。避免这种情况可以改用StringBuffer来累加字符串,因StringBuffer 是可变长的,它在原有基础上进行扩增,不会产生中间对象。
  (5)能用基本类型如Int,Long,就不用Integer,Long对象
    基本类型变量占用的内存资源比相应对象占用的少得多,如果没有必要,最好使用基本变量。
  (6)尽量少用静态对象变量
  静态变量属于全局变量,不会被GC回收,它们会一直占用内存。
  (7)分散对象创建或删除的时间
  集中在短时间内大量创建新对象,特别是大对象,会导致突然需要大量内存,JVM在面临这种情况时,只能进行主GC,以回收内存或整合内存碎片,从而增加主GC的频率。集中删除对象,道理也是一样的。它使得突然出现了大量的垃圾对象,空闲空间必然减少,从而大大增加了下一次创建新对象时强制主GC的机会。

分享到:
评论

相关推荐

    XXXX年重组并购势在必行——钢铁行业重组并购机会分析.pptx

    XXXX年重组并购势在必行——钢铁行业重组并购机会分析.pptx

    车联网安全认证势在必行——信安世纪车联网认证体系建设.pdf

    车联网安全认证势在必行,而信安世纪正是在这一领域进行了积极的体系建设。车联网,即智能网联汽车,它是互联网与汽车产业的融合产物,随着技术的发展,车联网的应用变得越来越广泛,安全性问题也日益凸显。在智能...

    环保工程及服务行业周报:垃圾分类势在必行,固废产业链望受益.pdf

    环保工程及服务行业周报:垃圾分类势在必行,固废产业链望受益.pdf

    倡议书:垃圾分类,势在必行.pdf

    【垃圾分类的必要性】 垃圾分类是当今社会面临的一项重要任务,其必要性主要体现在以下几个方面: 首先,垃圾分类有助于减少环境污染。未经分类的生活垃圾通常会被填埋或焚烧,这不仅占用大量土地资源,还会产生...

    20200219-平安-环保:对比国内外垃圾收费模式,中国垃圾计量收费势在必行.rar

    20200219-平安-环保:对比国内外垃圾收费模式,中国垃圾计量收费势在必行

    利用水泥厂协同处置城市垃圾势在必行.pdf

    随着城市化的快速发展,城市垃圾的产生量也迅速增长,如何有效地处理这些垃圾,已成为一个亟待解决的环境问题。在我国,传统的垃圾处理方法如填埋和焚烧虽然在一定程度上缓解了垃圾的处理压力,但同时也引发了一系列...

    机器学习在垃圾邮件过滤中的实现.pdf

    因此,开发出能够有效地检测和过滤垃圾邮件的技术势在必行。本文介绍了机器学习在垃圾邮件过滤中的实现,包括数据集的选择、特征提取方法、朴素贝叶斯、支持向量机、多层感知机、卷积神经网络和循环神经网络等机器...

    垃圾处理演讲稿.docx

    比如,美国等发达国家已经将垃圾分类融入公民的日常生活中,政府不仅提供便捷的分类设施,还定期进行分类垃圾的收集,以此来支持和鼓励这一行为。垃圾分类产业在全球范围内迅速成长,成为经济社会发展的一个新亮点。...

    云——势在必行 银行如何通过云赋能转型提升敏捷性.rar

    本文将深入探讨“云——势在必行 银行如何通过云赋能转型提升敏捷性”的主题,详细解析银行如何借助云服务实现业务的敏捷转型。 一、云技术的优势 1. 成本优化:传统银行IT基础设施建设投入高昂,而云计算提供按需...

    垃圾减量分类处理

    `plot`函数用于创建图表,展示不同类型的垃圾(如垃圾总量、其他垃圾、可回收垃圾、厨余垃圾和有害垃圾)随时间的变化趋势。`xlabel`和`ylabel`用于设置坐标轴标签,`legend`用于添加图例,帮助理解各个数据系列的...

    垃圾分类宣传PPT模板下载.pptx

    上海市委、市政府及各级领导对此高度重视,强调垃圾分类是势在必行、没有退路且引领时尚的举措。垃圾分类工作涵盖分类投放、收集、运输、处理四个环节,还需要配套的政策支持和法规执行,如沪府办发[2012]109号文件...

    垃圾分类调查表.doc

    相关部门应联动合作,形成合力,明确职责,从源头开始实施严格的垃圾分类制度,确保垃圾的分类收集、运输、处理等环节无缝对接。 3. 完善相关法律法规。建立健全垃圾分类相关法律法规,为垃圾分类提供法律支撑,对...

    家庭垃圾分类处理倡议书范文.docx

    因此,推动垃圾分类势在必行。 垃圾分类的优势在于它能将可回收物、有机垃圾和其他垃圾有效分离。这样不仅可以减少需要填埋的垃圾量,还能将有机垃圾转化为堆肥,实现资源的循环利用。台湾和日本在垃圾分类方面的...

    格雷母线与激光雷达在垃圾焚烧发电厂自动化垃圾吊中的应用.pdf

    因此,自动化垃圾吊的研发势在必行。 二、垃圾焚烧发电厂自动化垃圾吊的需求 垃圾焚烧发电厂中的垃圾吊是关键设备,负责将垃圾从仓库中取出并投入焚烧炉中。但是,当前国内的垃圾焚烧发电厂控制系统尚且没有全自动...

    保护环境.doc

    面对这样的困境,短剧倡导的是一种更为可持续的垃圾处理理念——垃圾分类和回收利用。 环保意识的培养是短剧的另一个重点。通过小宇的自我反思和改正,短剧呼吁每位观众,无论年龄大小,都要在日常生活中采取正确的...

    图像工程类课程本科生实践能力培养教学改革初探——以“图像数据结构与算法”课程为例.pdf

    综上所述,为了提高图像工程类课程的本科生实践能力,相关教学改革势在必行。通过设置“图像数据结构与算法”等针对性课程,学生不仅可以获得扎实的理论知识,还能通过丰富的实践操作培养出解决实际问题的能力。这种...

    垃圾分类工作汇报 (2) .docx

    因此,推广垃圾分类势在必行。 - **分类优点**: - **减少占地**:通过分类去除可回收及难降解的物质,可以大幅度减少垃圾体积,节省土地资源。 - **减少环境污染**:例如,废旧电池含有重金属,若不妥善处理将对...

    垃圾分类话题作文精选.docx

    因此,实行垃圾分类势在必行。 垃圾分类的直接益处是节约资源和减少环境污染。例如,废旧纸张的回收可以减少对森林资源的依赖,废旧金属的回收能够降低对矿产资源的需求。此外,废弃塑料转化为燃料和废玻璃的再利用...

Global site tag (gtag.js) - Google Analytics