这篇文章主要讲解了“java的垃圾回收机制介绍”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java的垃圾回收机制介绍”吧!
了解了到了绝大部分的对象是分配在堆上面的,我们在编码的时候并没有显示的指明哪些对象需要回收,但是程序在运行的过程中是会一直创建对象的,之所以没有内存溢出是因为我们的虚拟机帮我我们自动进行了垃圾回收,保证程序运行的时候有足够的空间来分配我们创建的对象。
JVM被分为五大内存区域,其中程序计数器、虚拟机栈,本地方法栈是线程私有的,内存随着线程的销毁而退出。堆和方法区是动态分配的,由于方法区的垃圾收集收效甚微,所以本章所说的垃圾回收主要指的是堆内存的垃圾回收。
什么样的对象会被回收呢?我们想象下在生活中,什么样的东西会被我们扔进垃圾桶呢,是不是已经不再使用的东西或者说是没有任何利用价值的东西,在java中也是一样的,就是不会再使用到的对象。那么在java中,怎么判断这个对象是不是不会再被使用呢?显然,这似乎要比现实生活中判断哪些东西是垃圾要复杂许多。
前面说到,我们需要知道哪些对象是需要被回收的,那么怎么判断这个对象是否需要回收呢?
引用计数法。
创建对象的时候,给对象添加一个引用计数器,每当有一个地方引用的时候,就给计数器加1,当引用失效时,就给计数器减1,当引用计数器为0的时候,说明这个对象不会再被使用。这种方法被称为引用计数法。引用计数法的逻辑比较简单,效率高,但是却无法解决对象和对象之间的循环引用的问题。
可达性算法分析
可达性分析算法的基本思想是通过被称为GCRoots的起始点向下搜索,搜索走过的链路被称为引用链,如果没有任何一条链路到达这个对象,那么这个对象就不会再被使用,就可以将其回收。
感谢各位的阅读,以上就是“java的垃圾回收机制介绍”的内容了,经过本文的学习后,相信大家对java的垃圾回收机制介绍这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。