前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JVM 学习笔记二 :JVM内存区域

JVM 学习笔记二 :JVM内存区域

作者头像
一枝花算不算浪漫
发布2019-11-20 10:13:27
2760
发布2019-11-20 10:13:27
举报

一、内存分配概述

二、JVM的内存区域划分

1、方法区

方法区主要是在JDK1.8 之前的版本,代表JVM中的一块区域。在JDK1.8以后,这块区域的名字改成了"Metaspace",可以认为是 元数据空间的意思。当然这里主要还是存放我们自己写的各种类相关的信息。

主要是存放从".class"文件中加载进来的类,还会有一些类似常量池的东西在这个区域里面。

2、程序计数器

当JVM加载类信息到内存之后,实际就会使用自己的字节码执行引擎,去执行我们写的代码编译出来的代码指令,在执行直接指令的时候,JVM里就需要一个特殊的内存区域,这个就是程序计数器。程序计数器是用来记录当前执行的直接指令的位置,也就是记录目前执行到哪一条字节指令了。

3、Java虚拟机栈

每个线程都有自己的Java虚拟机栈,来保存每个方法内的局部变量的数据。

如果一个线程执行了一个方法,就会对这个方法调用创建对应的栈帧,栈帧里就有这个方法的局部变量表、操作数栈、动态链接、方法出口的东西。

举例:

如果main线程执行了main()方法,那么就会给这个main()方法创建一个栈帧,压入main线程的Java虚拟机栈,同时在main()方法的栈帧里,会存放对应的"replicaManange"局部变量信息

4、Java堆内存

Java堆内存区域里会放入类似ReplicaManager的对象,然后我们因为在main方法里创建了ReplicaManager对象的,那么在线程执行main方法代码的时候,就会在main方法对应的栈帧的局部变量表里,让一个引用类型的“replicaManager”局部变量来存放ReplicaManager对象的地址

相当于你可以认为局部变量表里的“replicaManager”指向了Java堆内存里的ReplicaManager对象

三、一图胜千言

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-11-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、内存分配概述
  • 二、JVM的内存区域划分
    • 三、一图胜千言
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档