美文网首页
01__JVM(3)线程共享区

01__JVM(3)线程共享区

作者: 忞触动心灵 | 来源:发表于2019-05-25 16:57 被阅读0次

JVM(3)线程共享区

image

方法区

类信息

常量

静态变量

及时编译期编译后的代码(运行时编译的 如:动态代理添加的)

Java堆

对象实例

数组

Java堆的大小参数设置

-Xmx 堆区内存可被分配的最大上限
-Xms 堆区内存初始内存分配的大小

JMM? 叫JVM的内存模型

基于分代的思想

新生代(堆空间的1/3)

  • Eden 空间(8/10)
  • From Survivor空间(1/10)
  • To Survivor空间(1/10)

老年带(堆空间的2/3)

方法区

永久代(JDK1.8版本以前叫法) == 元空间(JDK1.8版本和以上版本的叫法)

JMM--对象内存分配

对象 优先在Eden分配

长期存活的对象将进入老年代

大对象直接进入老年代

动态对象年龄的判定

JMM--对象的回收----判断对象的存活

引用计数算法

可达性分析法(有引用与没有引用判断是否可达:基于GC Roots)

在Java,可作为GC Roots的对象包括:

1.方法区: 类静态属性引用的对象;

2.方法区: 常量引用的对象;

3.虚拟机(本地变量表)中对象;

4.本地方法栈JNI(Native方法)中引用的对象

image

JVM中的垃圾回收(GC)

新生代

Minor GC(除了定时回收以外--->触发条件:当新生代Eden空间不足时)

对应 ---> 复制回收算法(使用率只有50%)(特点:速度快;缺点:浪费空间50%)

适合大部分对象都不需要回收

(90%的对象不用区垃圾回收的,只有10%对象需要去垃圾回收)

所以 JVM新生代里做了10%空间的预留区 所以最后空间被分成了 8:1:1 的大小

image image
image

老年代

Full GC(全盘清扫)(优先使用标记清除,如果清除以后碎片过多就会使用标记整理)

标记清除算法(会带来内存碎片)

标记整理算法

image image

永久代

会不会进行垃圾回收? 会 (发生条件比较严格)

垃圾回收的算法

  • 1.复制回收算法
  • 2.标记清除算法
  • 3.标记整理算法

元空间

元空间过大会挤占堆的空间

相关文章

  • 01__JVM(3)线程共享区

    JVM(3)线程共享区 方法区 类信息 常量 静态变量 及时编译期编译后的代码(运行时编译的 如:动态代理添加的)...

  • 关于JVM内存模型的理解。

    JVM内存划分 JVM内存划分为线程共享区和线程独占区两部分,线程共享区包括方法区(Method Area)和堆(...

  • Java内存模型(JMM)

    Java内存模型 线程共享数据区 数据共享区也是我们经常说的堆区 方法区又叫静态区,所有线程共享,用于存储已经被虚...

  • 2021-02-23-jvm

    1、请介绍⼀下 JVM 内存模型?⽤过什么垃圾回收器 Java内存模型结构分为线程共享区和线程私有区 线程共享区:...

  • Java虚拟机内存模型

    章节 JVM结构 运行时数据区(Java run time data area)方法区-线程共享堆区 -线程共享J...

  • java虚拟机-区域划分

    Method Area(Non-Heap)(方法区) ——线程共享 Heap(堆) ——线程共享 Program ...

  • java中的变量存储地址

    堆区:只存放类对象,线程共享;方法区:又叫接静态存储区,存放class文件和静态数据,线程共享;栈区:存放方法局部...

  • jvm内存结构

    jvm内存 一条线线程共享 线程不共线【也叫非线程共享】 线程共享: 堆【Heap】、 方法区【method ar...

  • 2.JVM的内存区域

    一、内存区域(线程共享区-非线程共享区) JVM初始运行的时候都会分配好Method Area(方法区)和Heap...

  • JVM内存模型

    首先来简单介绍一下,整个JVM占用的内存可分为两个大区,分别是线程共享区和线程私有区,线程共享区和JVM同生共死,...

网友评论

      本文标题:01__JVM(3)线程共享区

      本文链接:https://www.haomeiwen.com/subject/kzdzzqtx.html