zoukankan      html  css  js  c++  java
  • GC

    本地方法栈、程序计数器、虚拟机栈不需要进行垃圾回收。因为他们的生命周期是和线程同步的,随着线程的销毁,他们占用的内存会自动释放。

    所以,只有方法区和堆区需要进行垃圾回收,回收的对象就是那些不存在任何引用的对象。

    垃圾回收区域:

    新生代(Youn Generation):大致分为Eden区和Survivor区,Survivor区又分为大小相同的两部分:FromSpace和ToSpace。新建的对象都是从新生代分配内存,Eden区不足的时候,会把存活的对象转移到Survivor区。当新生代进行垃圾回收时会触发Minor GC(也称作Young GC)。
     旧生代(Old Generation):旧生代用于存放新生代多次回收依然存活的对象,如缓存对象。当旧生代满了的时候就需要对旧生代进行回收,旧生代的垃圾回收称作Major GC(也称作Full GC)。

    持久代(Permanent Generation):在Sun 的JVM中就是方法区的意思,尽管大多数JVM没有这一代。

    常见的GC算法引用、复制、标记-清除和标记-整理(压缩)

     1.引用计数(Reference Counting): 引用+1,去引用-1,垃圾回收时,只针对计数为0的对象。无法处理循环引用的问题。

     2.复制(Copying):两个相等的区域。遍历一个区域复制到另个区域。不会出现内存碎片,但需要两倍内存空间。

     3. 标记-清除(Mark-Sweep):先从引用根节点标记所有被引用的对象,再遍历整个堆,清楚未标记。STW,会出现内存碎片。

     4.标记-整理(Mark-Compact):同标记清楚。有优化,清楚对象时压缩内存,不会出现内存碎片。

    垃圾收集器

    串行收集器(Serial GC)、并行收集器(ParNew GC)、Parallel Scavenge GC

    CMS (Concurrent Mark Sweep)收集器、Serial Old收集器、Parallel Old收集器

    G1(Garbage-First)收集器

    Serial GC, 复制算法。该收集器适用于单CPU、新生代空间较小且对暂停时间要求不是特别高的应用上,STW(stop the world)是client级别的默认GC方式。 

    ParNew GC,复制算法,Serial GC的多线程版本,除使用多条线程GC外,其他控制参数、收集算法、STW、回收策略都一样。这样它就可以被用于服务端上(server)。并行

    Parallel Scavenge GC,复制算法,并行多线程。更关注系统吞吐量(运行用户代码时间/[运行用户代码时间+GC时间]),是server级别的默认GC方式

    -----------------------------------------以上为 新生代的收集器-------------------------------------------------------------------

    Serial Old GC,标记整理算法。是Serial收集器的老年代版本,它同样使用一个单线程执行收集。主要使用在Client模式下的虚拟机。

    Parallel Old GC,标记整理算法。是Parallel Scavenge收集器的老年代版本,搭配使用。吞吐量优先。

    CMS,标记清除算法。与用户线程并发运行,以达到最短回收时间。常见的B/S架构的应用就适合这种收集器,因为其高并发、高响应的特点。(GC过程四个阶段,比较复杂)

    -----------------------------------------以上为 老年代的收集器-------------------------------------------------------------------

    G1,标记-整理算法,面向服务端的收集器。其次可以比较精确的控制停顿。

    JVM优化

    java自带小工具:jdkin

    java.exe
    javaw.exe

    java虚拟机
    javac.exe java编译器
    javadoc.exe  生成文档
    native2ascii.exe  编码转换
    jps.exe 查jvm线程
    jstat.exe  
    jinfo.exe  
    jmap.exe  
    jstack.exe  
    jconsole.exe  
    jvisualvm.exe  
  • 相关阅读:
    Two Sum II
    Subarray Sum
    Intersection of Two Arrays
    Reorder List
    Convert Sorted List to Binary Search Tree
    Remove Duplicates from Sorted List II
    Partition List
    Linked List Cycle II
    Sort List
    struts2结果跳转和参数获取
  • 原文地址:https://www.cnblogs.com/scmath/p/10246584.html
Copyright © 2011-2022 走看看