首页 技术 正文
技术 2022年11月16日
0 收藏 318 点赞 3,086 浏览 515 个字

栈:存放局部变量

堆:存放new出来的对象

方法区:存放类的信息,static变量,常量池(字符串常量) 在堆中,可以说是堆的一部分

 

理解java虚拟机内存分配堆,栈和方法区

创建了一个student类,定义了name属性, id静态变量 和一个study()方法
程序运行的时候 java虚拟机会通过类加载器 将类的信息加载到虚拟内存中 存放在方法区里
相当于一个类的模板 我们通过这个类的模板来创建对象,
这个其实很好理解 我们没有定义类 类加载器加载不到类的信息 不能将这个对象实例化
更直白一点,如果凭空new一个对象 编译的时候就会报错 person无法作为一个类 会提示你创建一个person类

理解java虚拟机内存分配堆,栈和方法区

静态变量 在加载类信息的时候就已经加载到内存中 存放在方法区里 静态变量或方法属于类,不需要new对象 就可以通过类名直接调用

在main方法中 new一个学生对象 stu1
java虚拟机就会在栈中 根据类的模板 加载出一个类信息 stu1    类中方法实现是固定的,java给每一个方法都分配了一个地址,需要使用方法的时候

底层引用的是这个方法的地址,而不是每new一个对象就加载一次方法体 
stu1属于一个局部变量 存放在堆中

在栈里的信息都有一个地址 通过这个地址来引用使用它们 在java中有关于对象的操作 其实就操作它们的地址

理解java虚拟机内存分配堆,栈和方法区

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,991
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,505
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,349
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,134
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,766
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,844