编程语言java对象内存分析 壹

Java在内存分配时涉及区域

寄存器
(1)运行Java程序就会启动对应的线程,每一个线程,都有一个寄存器,用来记录程序在当前线程执行的位置。当线程阻塞后然后再重新运行,就可以在寄存器记录的位置继续执行了。

(2)线程之间的寄存器互不影响,所以称为线程私有的。同时,寄存器是唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。在程序中无法通过代码控制寄存器的。


(1) 每个线程包含一个栈区,栈中只保存基本数据类型的对象和对象的引用(不是对象),对象都存放在堆区中
(2)每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。


(1)存储的全部是对象,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
(2)jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
(3)存放用new产生的数据

方法区
方法区是系统分配的一个内存逻辑区域,是JVM在装载类文件时,用于存储类型信息的(类的描述信息)。

(1)Class的基本信息

a.每个类的全限定名b.该类是类还是接口c.该类型的访问修饰符等

(2)已装载的Class的详细信息

a. 运行时常量池:在方法区中,每个类型都对应一个常量池,存放该类型所用到的所有常量,常量池中存储了诸如文字字符串、final变量值、类名和方法名常量。初中语文辅导它们以数组形式通过索引被访问,是外部调用与类联系及类型对象化的桥梁。(存的可能是个普通的字符串,然后经过常量池解析,则变成指向某个类的引用)

b.字段信息:字段信息存放类中声明的每一个字段的信息,包括字段的名、类型、修饰符。字段名称指的是类或接口的实例变量或类变量,字段的描述符是一个指示字段的类型的字符串,如private A a=null;则a为字段名,A为描述符,private为修饰符

c.方法信息:类中声明的每一个方法的信息,包括方法名、返回值类型、参数类型、修饰符、异常、方法的字节码。(在编译的时候,就已经将方法的局部变量、操作数栈大小等确定并存放在字节码中,在装载的时候,随着类一起装入方法区。)

静态变量(静态区):

类变量,类的所有实例都共享,我们只需知道,在方法区有个静态区,静态区专门存放静态变量和静态块。

非RAM存储

硬盘等永久存储空间

西安西科软件IT培训,教育引领未来,迄今为止,已有超过10000+学子取得显著的成就,获得社会各界的一致好评。2019,你只差一个正确的选择。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值