前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JVM 的体系结构

JVM 的体系结构

作者头像
用户2141593
发布2019-02-20 11:01:14
4110
发布2019-02-20 11:01:14
举报
文章被收录于专栏:Java进阶Java进阶

java的内存空间分为:方法区,程序计数器,本地方法栈,虚拟机栈,堆;

方法区:方法区是系统分配的一个内存逻辑区域,有运行时常量池、静态变量、类信息;

注意:方法区里有个静态区,静态区专门存放静态变量和静态代码块。

虚拟机栈:虚拟机栈就是我们常说的栈空间了;

 栈空间里存放的是局部变量表,动态链接,操作数栈,以及是方法的出口;每个栈帧都会随着方法的开始和结束相应的出栈和入 栈;

注意:1. 在方法中定义的一些基本类型的变量和引用变量都在方法的栈内存中分配。当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后(方法执行完成后),Java 会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作它用。

    2. 若引用变量被释放,该变量对应的对象,也就失去了引用,也就变成了可以被gc对象回收的垃圾。

堆空间:堆空间里存放的有且只有对象,同时包括数组对象,该区域是垃圾回收的重点区域,垃圾回收也会回收方法区;

注意:对象是在堆内存中初始化的, 真正用来存储数据的。不能直接访问。

引用类型变量是保存在栈当中的,引用变量是一个用来引用堆中对象的符号而已(指针),使用时可以用它来代表引用对象;

程序计数器:分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。

本地方法栈:本地方法栈与虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行Java方法服务,而本地方法栈则是为虚拟机使用到的Native方法服务。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016年08月19日,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档