• JVM总结


    一:JVM运行时数据区:程序计数器、虚拟机栈、本地方法栈、堆、方法区(元空间)

    1:虚拟机栈:存储当前线程运行方法所需的数据、指令、返回地址。

    栈帧(用来执行方法):每个方法在执行的同时都会创建一个栈帧,栈帧划分为:局部变量表(八大基本数据类型、对象引用reference)、操作数栈、动态链接、返回地址。

    2:本地方法栈:本地方法栈保存的是native方法的信息,当一个JVM创建的线程调用native方法后,JVM不在为其在虚拟机栈中创建栈帧,JVM只是简单地动态链接并直接调用native方法。但是Hotspot虚拟机把虚拟机栈和本地方法栈合二为一。

    二:堆内存分为新生代和老年代,新生代分为:Eden区域、survivor区域(from、to),也就是说新生代区域分为三部门,内存大小比例为8:1:1

    三:对象存放过程总结:

    ①:对象优先放在Eden区域

    ②:长期存活的对象放在老年代,age=15(发生一次gc,age加一),Eden->from/to->old

    ③:大对象直接进入老年代

    ④:动态年龄判断

    ⑤:空间分配担保,保守做法,对象要晋级老年代了,一般不发生老年代gc,但是如果放不下了,会发生gc

    四:JVM中的垃圾回收机制

    1:Minor GC: 

    回收区域:新生代

    回收算法:复制回收算法

    2:Full GC:

    回收区域:新生代、老年代、永久代(元空间)

    回收算法:标记清除、标记整理算法

    五:JVM中存在的引用类型

    1:强引用

    2:软引用

    3:弱引用

    4:虚引用

    郭慕荣博客园
  • 相关阅读:
    Java 多线程(一) 基础知识与概念
    hashMap和treeMap
    转:Java IO流学习总结
    hibernate缓存
    java aio nio bio
    java1.8新特性
    LeetCode Contiguous Array
    LeetCode Sort Characters By Frequency
    LeetCode Subarray Sum Equals K
    LeetCode Group Anagrams
  • 原文地址:https://www.cnblogs.com/jelly12345/p/12026351.html
Copyright © 2020-2023  润新知