zoukankan      html  css  js  c++  java
  • JVM内存模型

    GC优化:https://tech.meituan.com/2017/12/29/jvm-optimize.html

    jvm内存模型


    程序计数器

    是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的 程序计数器,这类内存也称为“线程私有”的内存。

    虚拟机栈

    是描述java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
    每一个方法从调用直至执行完成 的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。

    本地方法栈

    本地方法栈为Native方法服务

    创建的对象和数组都保存在Java堆内存中,也是垃圾收集器进行垃圾收集的最重要的内存区域。
    由于现代JVM采用分代收集算法, 因此Java堆从GC的角度还可以 细分为: 新生代( Eden From Survivor 和 To Survivor)和老年代。

    方法区

    存放已经被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据
    运行时常量池和元空间是方法区的一部分

    java垃圾回收

    https://yq.aliyun.com/articles/708634?utm_content=g_1000067014

    判断对象是否为垃圾的算法

    1)引用计数算法(一般不用)
    优点 执行效率高,程序执行受影响小
    缺点 无法检测出循环引用的情况,导致内存泄漏
    2)可达性分析法:通过判断对象的引用链是否可达来决定对象是否可以被回收

    垃圾回收算法

    1)标记-清除算法
    2)复制算法
    解决了碎片化问题
    顺序分配内存,简单高效
    适用于对象存活率低的场景
    3)标记-整理
    4)分代收集算法(常用)
    按照对象生命周期的不同划分区域以采用不同的垃圾回收算法
    新生代:采用复制算法
    老年代:采用用"标记-清除"或者"标记-整理"算法
    永久代(方法区):同老年区 (1.8以后已经没有)

    四种引用类型

    引用类型 被垃圾回收时间 用途 生存时间
    强引用 从来不会 对象的一般状态 JVM停止时终止
    软引用 在内存不足时 对象缓存 内存不足时终止
    弱引用 垃圾回收时 对象缓存 Gc运行后终止
    虚引用 不确定 标记、哨兵 不确定
  • 相关阅读:
    004-DQN
    003-sarsa
    002-Q Leaning
    001-强化学习简介
    阿里云GPU服务器配置深度学习环境-远程访问-centos,cuda,cudnn,tensorflow,keras,jupyter notebook
    003-keras模型的保存于加载
    004-linux常用命令-网络命令
    004-linux常用命令-压缩解压命令
    004-linux常用命令-添加管理员用户
    004-linux常用命令-用户管理命令
  • 原文地址:https://www.cnblogs.com/flyuz/p/11507605.html
Copyright © 2011-2022 走看看