zoukankan      html  css  js  c++  java
  • 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之间

  • 相关阅读:
    [Python]解决ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out
    Objective C XPC 初步学习<一>
    Vue的渣渣成长之路 第一章 登陆界面(vue+element+axios)以下文章感谢璋,威的同事给了我很大的帮助
    vue详情 恢复 删除
    vue添加
    vue显示详情加入回收站
    linq修改单条数据
    linq详情
    linq显示
    8.11模拟总结
  • 原文地址:https://www.cnblogs.com/lhl-shubiao/p/8747373.html
Copyright © 2011-2022 走看看