美文网首页
深入了解JVM

深入了解JVM

作者: _行走的五花肉_ | 来源:发表于2021-09-02 11:35 被阅读0次

深入了解JVM

JVM的实现需要遵守<Java虚拟机规范>,这是官方提供的规范
Java SE Specifications
所有的虚拟机实现都应该遵守

运行时区域

堆heap

用于存储对象实例,数组实例,日后可能出现值类型的支持
垃圾回收机制主要负责的区域, 又被称为GC堆(Garbage Collected Heap, 翻译成”垃圾堆”挺好)
线程共享

主流垃圾回收算法: 分代回收

  1. 新生代: 1个eden 2个survivor
  2. 老年代
  3. 永久代

可动态扩展
可产生OutOfMemoryError, 无法满足新的内存分配需求时

方法区method area

线程共享
用于存储已被虚拟机加载 的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据
又被称为: Non-Heap非堆

  • jdk7之前
    hotspot虚拟机, 方法区是用永久代的方式来实现的方法区
  • jdk7
    字符串常量池,静态变量,从永久代移出
  • jdk8
    完全废除永久代, 改用元空间, 类型信息移动到元空间中

组成

  • 运行时常量池, 存放编译后即确定的常量(符号引用和直接引用都会存), 以及动态产生的常量(例如String.intern())
  • 字符串常量池和运行时常量池有什么区别 https://www.jianshu.com/p/0b264df1a2d3

根据虚拟机实现, 是否可动态扩展, 是否可进行垃圾回收
可产生OutOfMemoryError
无法满足新的内存分配需求时

直接内存

直接使用物理内存, 并不是虚拟机的一部分
NIO中的DirectByteBuffer中会保存本机内存的地址, 使用本机内存, 避免在Java对和native内存之间复制数据,可提高性能
此区域受限于本机可用内存大小, 配置参数时, 需考虑堆的扩展, 避免大于物理内存限制, 出现OutOfMemoryError

虚拟机栈vm stack

  • 栈帧的组成: 局部变量表 操作数栈 动态链接 方法出口信息

本地方法栈native method stack

程序计数器program counter register

内存模型

CPU缓存
https://www.jb51.net/hardware/cpu/610074.html

相关文章

  • 深入JVM内核 目录

    深入JVM内核 目录 深入JVM内核1 初识JVM深入JVM内核2 JVM运行机制深入JVM内核3 常用JVM配置...

  • 深入了解JVM

    深入了解JVM JVM的实现需要遵守,这是官方提供的规范Java SE Specificat...

  • 初见JVM内存区域

    初见JVM内存区域 JVM一个重要的机制就是自动内存管理机制,为了深入理解JVM的内存管理机制,了解JVM的内存...

  • 一篇笔记整理JVM工作原理

    前言: 想提高Java开发,了解jvm是必不可少的。它让开发者了解他们的代码,jvm是如何变异与运行。深入了解jv...

  • 一篇笔记整理JVM工作原理

    前言: 想提高Java开发,了解jvm是必不可少的。它让开发者了解他们的代码,jvm是如何变异与运行。深入了解jv...

  • Java学习路径

    1.深入了解JVM/JRE/JDK "JVM是Java程序唯一认识的操作系统,其可执行文件为.class" JVM...

  • 深入了解JVM(一)

    定义: Java Visual Machine(JVM),Java程序的运行环境,这里指Java二进制字节码的运行...

  • JVM(二)内存与垃圾回收|类加载子系统

    在JVM概述中我们已经了解了JVM体系结构,下文将深入介绍JVM体系结构之一的类加载子系统。 目录 1 类加载子系...

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

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

  • java 安全点机制解析(编译执行)

    概述 我们都知道JVM中有很多操作,都是要求线程达到安全点,例如典型的垃圾回收,本文将深入细节,了解JVM的具体实...

网友评论

      本文标题:深入了解JVM

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