- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1.引言
Java程序设计已在很多院校中被列为计算机专业教学体系中一门重要的主干课。在众多计算机程序设计语言中,Java语言充分体现出了面向对象程序设计语言的众多特点[1]。因此,怎样
教好、学好该语言,通过Java语言理解、掌握面向对象程序设计语言的精髓,并能灵活运用去解决实际问题,便成了计算机教学中一个研究的热点。
垃圾收集机制是Java的一项关键技术,用于动态存储管理,自动地释放不再被程序引用的对象,按照特定的垃圾收集算法来实现资源自动回收的功能。正因为Java中的垃圾收集机制复杂而特殊,涉及到的多是内存管理问题,这使它成为Jav以介绍面向对象编程的基本概念、基本理论为重点,结合Java语言的语法规则、编程特点和设计思想、强调容易发生错误和编程应注意的地方,使学生能对Java技术有一个总体了解,通过本课程学习,使学生掌握Java语言的基础知识,理解和掌握面向对象程序设计的基本思想,熟练地使用Java语言进行程序的编写、编译以及调试工作a教学中的重点和难点。本人将结合自己的教学经验,对该部分的教学进行一些探讨。
2.与C++比较来理解垃圾收集器的作用
对比学习是一种很好的学习方式。可以去理解隐藏在语言背后的设计哲理,让我们更好地掌握编程语言的精髓。C、C++在我校是Java的先修课程,在内存管理方面与Java语言作对比去理解垃圾收集机制的问题能收到较好的效果。
在C++程序设计语言中,无论是对象还是动态配置的资源或内存,都必须由程序员自行声明产生和回收。若程序为某个变量分配了内存,但变量使用完之后却没有相应执行内存释放操作,就会导致该变量所占用的内存空间无法释放,直到程序终止。我们称这种无法回收的内存空间为内存漏洞(Memory Leaks)。若应用程序是一个不间断地运行的应用系统,产生内存漏洞的代码被反复执行,那么内存漏洞将越来越大,直到系统内存被耗尽,从而导致应用系统崩溃。内存漏洞成为困扰C++语言所开发的应用系统的难题。
为解决此类问题,Java提供了垃圾收集机制,用以跟踪正在使用的对象和发现并回收不再引用的对象。在Java程序中,内存仍由程序动态地分配,通过New等操作完成,但不需要管理内存的释放,因为Java虚拟机(JVM)提供了垃圾收集器,负责将不再引用的对象回收,以释放内存空间。
3.垃圾回收算法的突破
Java的垃圾收集算法对应用程序的性能有着非常重要的影响,有些时候甚至成为应用程序的性能瓶颈,因此Java学习者有必要了解这一内部机制。SUN公司在每次发布的新版JDK中都为其中的垃圾收集器做了一些改进。主要的垃圾收集算法包括引用计数(Reference Counting)、标记-清除(Mark-Sweep)算法、复制(Copying)算法、标记-整理(Mark-Compact)算法。在单位时间教学中对各个算法的分析不可能面面俱到,这里从三个最具代表性的算法分析突破:
(1)引用计数算法
引用计数算法的垃圾收集策略是引用计数。每一个对象都有一个关联的引用计数,表示连接该对象的活跃引用的数量。当有引用连接至对象时,引用计数加1,当引用离开作用域或置为null时,引用计数减1。如果对象的引用计数是零,那么它就是可以回收的垃圾。这一算法在执行垃圾收集任务时速度较快,但管理引用计数的开销在整个程序生命周期中将持续存在,且引用计数算法无法正确释放循环引用的内存块。
(2)复制算法
复制算法把整个堆分成相等的两块。在任意时刻,只有其中的一块用于分配对象,另一块是空的。在垃圾收集时,用于分配对象的一块称为源块,空的一块称为目的块,所有从根对象出发可及的对象都从源块拷贝到目的块,在下一次垃圾收集时,源块和目的块互换。
(3)标记-清除算法
基于标记-清除算法的垃圾收集器,从根开始遍历所有可到达的对象,标记出可到达对象,剩下的就是垃圾对象。然后就对堆进行清除,所有没有标记的对象都作为垃圾回收并返回空闲列表。
在不同算法的讨论中,重点是分析它们的优缺点,如引用计数算法最为直观,常用来说明垃圾收集的工作方式,特别适合教学分析Java垃圾收集算法的入门分析,但它从未被应用于任何
一种JVM实现中[2]。复制算法效率很高,而且不存在内存碎片,缺点是被分配的内存只有一半是可用的,一半是空闲的,长寿的对象在每次收集时都要来回复制。而标记和清除是一种停止式的垃圾收集技术,收集暂停可能会很长,在清除阶段整个堆都是可访问的,这对于可能有页面交换的堆的虚拟内存系统有非常负面的性能影响,另外它还容易使堆产生碎片。
4.熟悉与垃圾回收有关的一些常用方法
Java语言提供了一些和垃圾回收有关的方法,以便在必要的时候能和垃圾收集器进行交互。Runtime类以及System类中的一些方法可以很方便地让你调用垃圾收集程序,从而使尚待进行的清除动作得以执行,也
您可能关注的文档
最近下载
- 2025年安徽皖江高速公路有限公司高速公路收费人员招聘笔试模拟试题及答案解析.docx VIP
- 人体结构与功能教案仅供参考.pptx VIP
- 物探报告范例.pdf VIP
- 三级养老护理员国家职业技能培训模块一项目三任务三协助老年人进行口腔吸痰.pptx VIP
- 2025年安徽皖江高速公路有限公司高速公路收费人员招聘考试备考题库及答案解析.docx VIP
- 2025年安徽皖江高速公路有限公司高速公路收费人员招聘笔试备考试题及答案解析.docx VIP
- 完整版2025年开学思政第一课.ppt VIP
- 2025年安徽皖江高速公路有限公司高速公路收费人员招聘考试备考试题及答案解析.docx VIP
- 写作载体与写作受体.ppt VIP
- 电子科技大学博士、硕士学位授权点一览表最终.docx VIP
文档评论(0)