JVM

一、判断一个对象可不可以被回收标志:

1>引用计数器

    每当有一个地方引用,计数器就加1,引用失效就减1,计数器为0就不可用;

2>可达性分析算法(GC root)

    当一个对象没有与任何引用链相连的时候,就可以对其进行回收;

JVM  什么情况下触发GC,GC触发方式是什么?

     JVM内存不足时会触发GC,触发方式为分代收集算法:1年轻代,2年老代

年轻代:当一个对象被创建时,内存分配首先在年轻代,大部分对象在创建之后都不再使用,对象很快变得不可达(没用)

     被GC清理;即Young GC

年老代:年轻代残存的对象被复制到年老代,年老代的空间比年轻代大,年老代GC的执行次数也比年轻代少,当年老代内存不足时,执行Full GC

GC算法:1、标记--清除;2、复制;3、标记--整理三种

     标记--清除算法:首先标记所有需要回收的对象,标记玩以后统一回收。

     缺点:效率低下,会造成不连续的内存空间

复制算法 

     主要解决效率问题,将内存空间划分为2部分,当这一块内存用完时,将存货的对象分配到另一块内存空间上,然后对已使用过得进行一次性清理

     备注:常用来回收 新生代

标记--整理算法

      标记完后,让所有对象想内存一端移动,然后直接清理边界以外的内存

二、JVM参数配置优化

1、String常量池在JDK1.7以前是永久区的一部分,1.7以后被移到堆中进行管理

     -Xms512M -Xmx1024M -XX:MaxPermSize=1024M  配置堆大小介于512-1024之间

原文地址:https://www.cnblogs.com/lhl-shubiao/p/8747373.html