博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java程序在内存中的分布
阅读量:4261 次
发布时间:2019-05-26

本文共 818 字,大约阅读时间需要 2 分钟。

标签:
212人阅读
(0)
分类:

在中,java程序在内存中的分布可分为三大模块:堆内存、栈内存和方法区。

堆内存:用于内存空间的申请;用于存放new创建的对象和数组,jvm会定期进行检查,如果不被引用,则回收。
栈内存 : 保存本地变量的地址;是由编译器自动分配释放的。在具体方法执行完毕后,系统会自动释放jvm内存资源。
方法区:方法区也叫数据区或共享区。用于存放静态变量、静态方法以及代码的区域,不释放。

public class Demo{public void main(String[] args){int num = 10;Test test = new Test();test.show();}}class Test{int a = 2;public void show(){System.out.println(a);}}  
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13

这里写图片描述

如果数据类型是基本数据类型,会直接在栈内开辟空间存储量,例如:num=10;会在栈内存中开辟一个num的空间。存储一个值是10。
但是对于一个引用类型的变量,会开辟一个空间然而存储的是一个内存的首地址,指向堆内存中的这块地址,引用这个对象,因此叫做引用类型、
我们创建了Test对象,接下来调用test的show()方法,会在栈内存中,开辟一个show()方法的栈帧,先指向堆内存中Test()对象,然后指向存储在方法区内的show()方法代码,执行完,show()栈内存将会销毁该栈帧。

你可能感兴趣的文章
浅析HTML <label> 标签的 for 属性
查看>>
H5使用Selectors API简化选取操作
查看>>
记录我人生新的开始
查看>>
关于System.arraycopy方法的使用
查看>>
java基本概念(一)
查看>>
java基本概念(二)
查看>>
简易的ATM机
查看>>
旧版本的ATM
查看>>
关于super()
查看>>
关于JAVA中GUI的使用
查看>>
接口的简单使用
查看>>
关于接口的几点
查看>>
自己封装的一个简单组件:文字标签 文本框
查看>>
集合的一些概念总结
查看>>
几个常见的关于日期的SQL
查看>>
常见约束、事务及其他查询语句
查看>>
关于jdbc
查看>>
利用jdbc做的一个简单系统(接上一篇)
查看>>
对TextField 和JTextField 等文本编辑区的监听
查看>>
详解个推java服务端集成(干货)
查看>>