Java——5分钟带你了解java垃圾回收机制

这是我参与更文挑战的第2天,活动详情查看: 更文挑战java

咱们为何要了解垃圾回收机制呢?程序员

若是你已经学过C/C++等传统的编程语言,你会知道回收已经分配的内存是如何的痛苦,由于你不知道 何时须要回收内存。 算法

并且,更痛苦的是,若是你不及时回收内存,就会致使系统的运行速度降低,甚至致使系统瘫痪,这种现象称为内存泄漏。编程

这类传统的编程语言的显示垃圾回收机制主要有一下两个缺点:
1.程序忘记及时回收垃圾形成内存泄漏,使系统的性能降低。
2.程序错误地回收系统核心内存,致使系统崩溃。
复制代码

java语言的垃圾回收机制的一个显著的优势就是不须要程序员手动进行垃圾回收,JAVA虚拟机会自动帮你进行垃圾回收!(是否是很爽)markdown

说了这么多那什么是垃圾回收呢?编程语言

垃圾回收是一种动态的存储管理技术,它自动释放再也不被程序引用的对象,按照特定的垃圾回收算法来实现内存资源的自动回收功能。post

事实上,垃圾回收除了释放再也不使用的对象,也会整理碎片内存。因为建立对象和垃圾回收器释放丢弃对象所占用的内空间外,内存会出现碎片,而java的垃圾回收机制会把这些碎片进行整理到堆的另外一侧,将整理出来的内存分配给新的对象。性能

可是java垃圾回收机制也有缺点,它会影响系统的性能,由于java虚拟机必需要跟踪程序中有用的对象来,才能够肯定对象何时是无用的,而后进行回收。spa

最后一点是java程序员不能强制进行垃圾回收,你能够将对象的引用设置为null,暗示java虚拟机这是个无用的对象,还能够调用System.gc()来建议系统进行垃圾回收,可是系统何时进行垃圾回收就不是java程序员能控制的了(这是考点哦!code

因此编写java的一个原则就是:当你再也不须要这个对象时就不要再保持这个对象的引用,不然就会致使内存愈来愈少,形成系统的性能愈来愈低。

注:本文的部分定义来自于李刚老师的《疯狂java讲义》
复制代码

以上内容若有不对,欢迎你们评论指正。

相关文章
相关标签/搜索