一、JVM主要的结构如下:

二、各个区域功能介绍

1)、方法区(Method Area):

(1)用于存储虚拟机加载的类信息、常量、静态变量等,是各个线程共享的内存区域;

(2)默认最小值为16MB,最大值为64MB,可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小;

(3)方法区中还有一部分是运行时常量池,主要用来存储编译时生成的字面量和符号引用,常量也可以在运行时产生,如String的intern方法;

(4)和Java堆一样不需要连续的内存和可以选择固定大小或可扩展外,还可以选择不实现垃圾收集。

2)、栈:

(1)Java虚拟机栈是线程私有的,生命周期与线程相同。

(2)每个方法被执行的时候都同时创建一个栈帧(stack frame),用于存储局部变量表,操作栈,动态链接,方法出口等信息。每一个方法执行完的过程就对应栈帧

在栈中进入进出的过程。

(3)JVM虚拟机栈中的局部变量表存储了编译期可知的各种基本数据类型。局部变量表所需要的空间在编译期就分配完成。

(4)栈帧是方法运行期的基础数据结构。

3)、本地方法栈(Native Method Stack):

(1)本地方法栈为JVM虚拟机使用到的Native方法服务。

4)、堆(Heap):

(1)Java虚拟机所管理的内存中最大的一块。

(2)Java堆是所有线程共享的区域,在虚拟机启动时创建。

(3)内存区域的唯一目的就是存放对象实例,所有的对象实例以及数组都在堆上分配内存。

(4)Java堆是JVM垃圾回收机制主要管理的内存区域,Java堆可以处于内存上不连续的内存空间。

5)、程序计数器:

(1)一块比较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器

(2)字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令、分支,循环、跳转、异常处理、线程恢复等都需要依赖程序计数器。

6)、运行时常量池:

(1)运行时常量池是方法区的一部分。

(2)Class文件中除了有类的版本、字段、方法接口描述等信息外,还有一项信息是常量池,用于存放编译期生成的各种字面量和符号引用,这部分内容将在类加载

之后存放到方法区的运行时常量池。

7)、直接内存:

由于Java引进了NIO,引入了通道和缓冲区的IO方式,可以调用Native方法直接分配堆外内存,这个堆外内存就是本机内存,不会影响堆内存大小。

相关文章:

php虚拟机java虚拟机,Java虚拟机的具体详解相关推荐

  1. VMware虚拟机文件夹中各文件作用详解

    VMware虚拟机文件夹中各文件作用详解 虚拟机的文件管理由VMware Workstation来执行. 一个虚拟机一般以一系列文件的形式储存在宿主机中, 这些文件一般在由workstation为虚拟 ...

  2. 虚拟机VMware的Ubuntu下安装tensorflow详解

    这里笔者已经安装好了虚拟机并安装了Ubuntu系统,并且虚拟机可以联网,因此就直接开始介绍下面的步骤.网上博文很乱,特意整理,以供参考. 虚拟机VMware的Ubuntu下安装tensorflow详解 ...

  3. 2015年 第06届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  4. 2018年 第09届 蓝桥杯 Java B组 决赛真题详解及小结

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  5. Java内存模型(JMM)详解-可见性volatile

    这里写自定义目录标题 Java内存模型(JMM)详解-可见性 什么是JMM JMM存在的意义 为什么示例demo中不会打印 i 的值 如何解决可见性问题 **深入理解JMM内存模型** JAVA内存模 ...

  6. java的String类源码详解

    java的String类源码详解 类的定义 public final class Stringimplements java.io.Serializable, Comparable<String ...

  7. 牛客网 Java 工程师能力评估 20 题 - 详解

    牛客网 Java 工程师能力评估 20 题 - 详解 不知在看博客的你是否知道 牛客网,不知道就太落后了,分享给你 : 牛客网 此 20 题,绝对不只是 20 题! 免责声明:本博客为学习笔记,如有侵 ...

  8. java集合框架史上最详解(list set 以及map)

    title: Java集合框架史上最详解(list set 以及map) tags: 集合框架 list set map 文章目录 一.集合框架总体架构 1.1 集合框架在被设计时需满足的目标 1.2 ...

  9. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

  10. Java中的异常和处理详解

    Java中的异常和处理详解 参考文章: (1)Java中的异常和处理详解 (2)https://www.cnblogs.com/lulipro/p/7504267.html 备忘一下.

最新文章

  1. Linux系统基础-管理之用户、权限管理
  2. excel去掉一行文字中的逗号合并在一起_Python使用pandas库五行代码合并excel
  3. 中国工商银行已使用OceanBase!
  4. mysql的count()函数如何选择索引,千万级表的count()查询优化实例
  5. WPF动画之后属性值无法改变
  6. 新的html页面拼接类库(简易的模板引擎)
  7. Android开发中如何创建自定义对话框
  8. cgi进程设置多少 宝塔_宝塔面板安装完的一些列操作
  9. SpringBoot之项目运行常见报错
  10. 1076. Wifi密码 (15)-PAT乙级真题
  11. 随手记_英语_学术写作_标点符号的使用
  12. ABAP 中的搜索帮助
  13. uniapp canvas生成海报不显示问题
  14. 通过IP连接oracle数据库
  15. 数据库SQL的高级查询
  16. 微信小程序 裁剪图片
  17. c语言程序设计精品课课件,C语言程序设计 精品课课件(全套讲义).ppt
  18. java表白程序玫瑰花_Java版给爱人表白的玫瑰花程序代码
  19. Ubuntu 无损图片压缩
  20. layui导出excel

热门文章

  1. 【重点】剑指offer——面试题36:数组中的逆序对
  2. Leetcode 210.课程表II
  3. onenote 不能同步的原因及解决方法(教训总结)
  4. 数码相机如何当做摄像头(图文并茂版)
  5. 《JavaScript高级程序设计》Chapter 10 DOM
  6. 【LeetCode】168. Excel Sheet Column Title 解题小结
  7. Ruby之旅(16) 异常处理 rescue与ensure
  8. linux rpm yum 安装 软件
  9. Linux监控工具Spotlight on Unix
  10. 《Unity着色器和屏幕特效开发秘笈》—— 1.7 创建渐变纹理来控制漫反射着色...