摘要: 对象在内存中的布局可以分为3块区域:对象头(Header):一部分是用来存储对象自身运行时的数据(如哈希码,GC分代年龄)。这部分被设置为非固定的数据结构,即根据对象的状态对象头不同字段所占的大小不一样,但总大小都是32bit或64bit。另一部分是类型指针,即对象指向它的类元数据的指针,确定对象是... 阅读全文
posted @ 2015-02-01 18:29 sunseCode 阅读(126) 评论(0) 推荐(0)
摘要: 对象的创建关注以下几个问题:1、为创建的对象分配内存空间有两种方式:指针碰撞:即规整的划分空间,内存空间中用过的放一边,没用过的放另外一边。需要分配时,指针向空闲空间那边挪动一段与对象大小相等的距离。空闲列表:已用和未用空间相互交错,虚拟机需要维护一个列表,记录哪些内存是可以用的,在分配的时候找到一... 阅读全文
posted @ 2015-02-01 18:07 sunseCode 阅读(165) 评论(0) 推荐(0)
摘要: Java虚拟机所管理的内存会包括以下几个运行时数据区域: 程序计数器:是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。如果线程正在执行的是一个Java方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址。如果正在执行的事Native方法,这个计数器值则为空。 Java虚... 阅读全文
posted @ 2015-02-01 17:50 sunseCode 阅读(396) 评论(0) 推荐(0)