栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-内存分析

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-内存分析

Java的内存分析
	--	栈中存放局部变量
		局部变量:方法的参数,或者方法{}内部的变量
		作用域:一旦超出作用域,立刻从栈内存当中消失。
	--	堆
		凡是new出来的东西,都放在堆当中。
		堆内存里面的东西都有一个地址值:16进制
		堆内存里面的数据,都有默认值。规则:
		如果是整数             默认值为0
		如果是浮点数         默认值为0.0
		如果是字符             默认值为‘u0000’
		如果是布尔          	默认值为false
		如果是引用类型       默认值为null
	--	方法区
    	存储.class相关信息,包含方法的信息。
    	常量池、static final 修饰的成员变量都存储于方法区中
    	在类加载的时候,会将静态内容也加载到方法区的静态域中,静态域的内容先于对象存在,这个静态内容被所有的对象共享

解析

  1. 首先执行main方法,会在栈中开辟一个main栈桢
  2. 在遇到Person时,会先加载它的字节码信息Person.class
  3. 执行等于后面的Person对象(对象放在堆中),为其赋一个地址值,这个对象中由三个成员变量,分别为这三个变量开辟内存初始化,int类型默认是0,字符串默认是null
  4. 去执行Person的构造器,就去去找Person方法,如何为这个方法开辟一个构造器栈桢,将a、b、c三个局部变量分别存入到栈中,为其赋值(基本数据类型赋值时直接传值,引用数据类型赋值时,它首先会把值放到字符串常量池里,它对应有一个地址,然后将这个地址赋给变量)a=1,b=20,c=地址值。
  5. 将abc的值分别赋值到堆中的变量,这个方法就结束了,一旦结束,这个方法就会从栈内存中消失
  6. 会在main方法中将p存入,把堆中对象的地址值赋给p,到此,程序就结束了

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/343717.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号