美文网首页
2019-10-09 JVM简单理解

2019-10-09 JVM简单理解

作者: 小苏c | 来源:发表于2019-10-09 15:17 被阅读0次

1、内存模型以及分区,需要详细到每个区放什么。

JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,class 类信息常量池(static 常量和 static 变量)等放在方法区new:

方法区:主要是存储类信息,常量池(static 常量和 static 变量),编译后的代码(字节码)等数据

堆:初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和数组都要在堆上分配

栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口等信息,局部变量表存放的是 8 大基础类型加上一个应用类型,所以还是一个指向地址的指针

本地方法栈:主要为 Native 方法服务

程序计数器:记录当前线程执行的行号

2、堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。

堆里面分为新生代和老生代(java8 取消了永久代,采用了 Metaspace),新生代包 含 Eden+Survivor 区,survivor 区里面分为 from 和 to 区,内存回收时,如果用的是复 制算法,从 from 复制到 to,当经过一次或者多次 GC 之后,存活下来的对象会被移动 到老年区,当 JVM 内存不够用的时候,会触发 Full GC,清理 JVM 老年区 当新生区满了之后会触发 YGC,先把存活的对象放到其中一个 Survice 区,然后进行垃圾清理。因为如果仅仅清理需要删除的对象,这样会导致内存碎 片,因此一般会把 Eden 进行完全的清理,然后整理内存。那么下次 GC 的时候, 就会使用下一个 Survive,这样循环使用。如果有特别大的对象,新生代放不下, 就会使用老年代的担保,直接放到老年代里面。因为 JVM 认为,一般大对象的存 活时间一般比较久远。

3、简述 java 垃圾回收机制?

在 java 中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM 中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。

相关文章

  • 2019-10-09 JVM简单理解

    1、内存模型以及分区,需要详细到每个区放什么。 JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放...

  • idea中设置JVM参数,简单理解JVM常见参数,JVM调优

    idea中设置JVM参数,简单理解JVM常见参数,JVM调优简单入门 前面学习了JVM的内存分布,今天就来验证下。...

  • Java基础-深入理解Javaclass文件格式

    对于理解JVM和深入理解Java语言,学习并了解class文件的格式都是必须要掌握的功课。原因很简单,JVM不会理...

  • 反编译原理浅析

    本文只作概念性讲解,不作详解,只是希望把我理解的原理简单地描述出来,不深入探究。 JVM JVM是什么?我的理解简...

  • JDK,JRE,JVM三者的区别.md

    简单粗暴的理解 JDK包含了JRE,JRE包含了JVM 详解 JDK: java development kit,...

  • 2019-10-09

    2019-10-09 宗明3 字数 379 · 阅读 0 2019-10-0921:29 2019-10-09 宗...

  • JVM永久区的简单理解

    方法区 & 永久区 方法区是jvm规范里要求的,永久区是Hotspot虚拟机对方法区的具体实现,前者是规范,后者是...

  • 分布式Java读书笔记二:JVM

    第3章 深入理解JVM 深入理解JVM JVM标准结构 JVM负责装载class文件并执行,因此,首先要掌握的是J...

  • JVM

    栈容量由-Xss指定深入理解JVM—JVM内存模型 JVM内存模型和JVM参数的关系

  • Java核心技术

    1. JVM相关 对于刚刚接触Java的人来说,JVM相关的知识不一定需要理解很深,对此里面的概念有一些简单的了解...

网友评论

      本文标题:2019-10-09 JVM简单理解

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