垃圾回收机制(GrabageColllection,GC)

来源:互联网 发布:一条网线开两个淘宝店 编辑:程序博客网 时间:2024/06/15 22:15

C\C++:显示垃圾回收机制

缺点:
- 程序忘记及时回收无用内存,而导致内存泄漏、降低系统性能
- 程序错误地回收程序核心类库的内存,而导致系统崩溃
- 内存在程序结束之前一直被占用、对象所占用的内存不能分配给其他对象

JAVA:垃圾回收机制

  • CPU空闲时→JRE提供一个后台线程自动运行
  • 内存不足时↗
  • 程序员无法精确控制垃圾回收时间和顺序
  • 类的实例(对象)堆内存的回收由垃圾回收来负责
  • 当没有引用变量指向原先分配对象内存时,JVM的一个超级线程会自动释放该内存区
  • 清除内存记录碎片

优点:

-提高编程效率
-保护程序完整性,Java语言安全策略的一个重要部分

缺点:

-它的开销影响性能,Java虚拟机跟踪有用对象才能确定对象可用性,最终释放无用对象,这个过程费时
-算法不完备性

垃圾回收机制算法特点

  • 发现无用对象
  • 回收无用对象内存空间(JVM堆内存里的内存空间),再使用
  • 只回收内存资源,数据库连接磁盘I/O不回收
  • 快速回收该对象的引用变量,设置为null
  • 不可预知性,可通过Runtime对象的gc()或System.gc(),建议系统进行垃圾回收,这种调用不能精确控制
  • 能够精确地标记活着的对象(完全回收所有废弃对象的前提->造成内存泄漏)
  • 能够精确地定位对象之间的引用关系(实线归并和复制等算法的必要条件->通过引用对象可靠回收,所有对象重新分配,减少碎屏产生)
  • JVM多种不同垃圾回收实线

    • 垃圾回收开始时,停止应用程序的进行
    • 垃圾回收进行时,允许应用程序的进程进行
    • 同一时间,允许垃圾回收多线程运行

    原则:
    不需要的对象,不要引用,内存↓->垃圾回收执行↑->系统性能↓

    java8:使用本地内存来存储类的元数据信息->原空间Metaspace

0 0
原创粉丝点击