Java程序员必备基础结构图

作者:捡田螺的小男孩

来源:捡田螺的小男孩

前言

最近看了深入理解Java虚拟机第三版,整理了一些基础结构图,算是比较全的了,做一下笔记,大家一起学习。

1.Java虚拟机运行时数据区图

img

JVM内存结构是Java程序员必须掌握的基础。

程序计数器

  • 程序计数器,可以看作当前线程所执行的字节码的行号指示器
  • 它是线程私有的。

Java虚拟机栈

  • 线程私有的,生命周期与线程相同。
  • 每个方法被执行的时候都会创建一个"栈帧",用于存储局部变量表(包括参数)、操作数栈、动态链接、方法出口等信息。
  • 局部变量表存放各种基本数据类型boolean、byte、char、short等

本地方法栈

  • 与虚拟机栈基本类似,区别在于虚拟机栈为虚拟机执行的java方法服务,而本地方法栈则是为Native方法服务。

Java堆

  • Java堆是java虚拟机所管理的内存中最大的一块内存区域,也是被各个线程共享的内存区域,在JVM启动时创建。
  • 其大小通过-Xms和-Xmx参数设置,-Xms为JVM启动时申请的最小内存,-Xmx为JVM可申请的最大内存。

方法区

  • 它用于存储虚拟机加载的类信息、常量、静态变量、是各个线程共享的内存区域。-可以通过-XX:PermSize 和 -XX:MaxPermSize 参数限制方法区的大小。

2. 堆的默认分配图

img

  • Java堆 = 老年代 + 新生代
  • 新生代 = Eden + S0 + S1
  • 新生代与老年代默认比例的值为 1:2 ,可以通过参数 –XX:NewRatio 配置。
  • 默认的,Eden : from : to = 8 : 1 : 1 ,可以通过参数–XX:SurvivorRatio 来设定

3.方法区结构图

img

方法区是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值