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

JVM 的运行数据区

原创
作者头像
矿泉水
发布2018-05-11 12:10:03
6471
发布2018-05-11 12:10:03
举报
文章被收录于专栏:风中追风风中追风

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

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

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

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

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

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

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

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

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

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档