- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
综述java运行中垃圾回收机制.doc
综述java运行中垃圾回收机制
摘要:java语言作为一中优秀的编程语言,其优秀之因素一个比较重要的方面就是具有自动垃圾回收机制,垃圾回收可以减少程序员的工作量,提升程序的执行效率。本文对垃圾回收机制做了研究说明。
中国 8/vie
关键词:GC;垃圾回收机制;java;jvm;程序
中图分类号:TP312 文献标识码:A :1007-9416(2017)02-0231-01
Java语言由于其良好的跨平台性而得到广泛应用,作为C++的改良语言,java增加了垃圾回收机制,从而避免了C++运行时由于忘记释放对象而带来的内存泄漏问题。Java中,运行需要的对象名称存放在栈中,而该对象实例化后的数据保存在堆中,如果一个栈中的对象不再指向原来堆中的数据时,则这个对象所占用的内存空间就是一个垃圾,Java运行环境中JVM的一个系统线程能及时释放一些无用信息。Java代码执行顺序如图1所示。
从中可知垃圾回收是在一个程序运行块的最后一个环节(实际执行过程中这个过程是循环的,垃圾回收时间是由算法加权得到不可预测)。它是一个动态存储管理技术,自动释放不再被引用的对象,这个释放的过程按照一定的算法来实现。在java中没有c++中的delete命令但是其中系统提供了gc方法回收垃圾。下面对GC机制下的gc方法进行测试:
1 测试代码
测试代码如图2所示。
2 测试环境
测试环境是在安装jdk和jre的电脑上,通过控制台调用javac编译器编译生成类文件,然后调用java命令执行该类文件,在后面配置-verbosegc参数可以查看程序使用堆内存的情况,如图3所示。
3 测试结果
从测试结果截图中可以看到系统共收回848-617=231K的空间,括号里面的125952K表示堆内存总容量,共使用了0.0105963秒。
上面测试中使用了系统gc方法回收垃圾,但是为了减少使用GC而导致的间歇性停顿,尽量不要显式调用系统gc方法。系统GC的触发条件是应用程序空闲时,或者java堆内存不足时,前者是为了不占用系统后期程序运行时间而设置的优化,而后者是强制调用,出现堆内存不足时系统会回收内存用于重新分配,如果内存还是不够的情况下,系统会再进行两次GC调用,如果还是无法满足条件,就会报出内存溢出的错误。
GC在进行垃圾回收时,会首先调用finalize函数,这个函数的作用是释放一些其他做法开辟的内存空间,由于java垃圾回收器默认只知道回收由nealloc函数分配的空间或者打开的文件资源等,java垃圾回收机制不会主动收回,这时候可以在finalize方法中出一些清理工作,需要?Ω煤?数的一个重写工作,在重写的过程中可以对特殊空间进行一些处理。
在垃圾回收机制中,垃圾是要按照一定的算法回收的,通常提供的算法有以下几种:
(1)增量收集法(Incremental Collecting)。增量收集法是在应用运行的时候运行算法进行垃圾回收,但是在JDK5以后不再使用该算法,此处不叙。
(2)引用计数法(Reference Counting)。这是一种比较传统的垃圾回收算法,在某个对象被使用的时候,让引用计数加1,删除某个对象的引用后,就让引用计数减1,如此在一个对象正常引用结束的时候,引用计数为0,在GC回收内存的时候,只用手机引用计数为0的对象。但是这个算法无法解决对象的循环引用。
4 结语
垃圾回收机制给程序员的开发带来了极大的便利,垃圾回收能自动释放内存空间,减轻编程的负担。这使Java 虚拟机具有一些优点。首先在编程效率方面,垃圾回收机制帮助程序员解决了很多难懂的存储器问题,同时垃圾回收机制提升程序的安全性,保护程序的完整。
原创力文档


文档评论(0)