关于JVM个人浅谈(三)
来源:互联网 发布:淘宝助手怎么下架宝贝 编辑:程序博客网 时间:2024/04/27 20:54
在上一篇中,大致讲述了GC回收的算法,接下来就在本篇文章里介绍一下如何去预估Java对象的大小,以便后续再优化JVM提供数据理论基础。
一个普通对象的内存大小如下:
1._mark对象头 占用8byte;
2.oop指针,默认占用4byte;
3.数据区 具体根据对象属性而定;
4.padding,内存对齐(如果不懂,可以看看计算机组成原理 这本书 大学计算机系必修之一) Java以8的倍数对齐
一个普通的数组内存大小如下:
1._mark对象头 占用8byte
2.oop指针,默认占用4byte
3.数组长度,占用4byte
4.数据区 具体数组对象大小而定
5.padding,内存对齐 也是以8的倍数
下面我们举个例子:
package com.object.test;public class ObjectSize {private Stringb;// 4byte;private int a; // 4byte;private shortc;// 2byte;private Objectd;// 4byte;}
这样一来该对象的大小等于(这里需要注意的是 内存排序方式是从长到短,引用最后):
总大小是: 8(mask)+4(oop)+4(a)+2(b)+2(padding)+4(b)+4(padding)=28;
这样一个对象占用了28个byte。
0 0
- 关于JVM个人浅谈(三)
- 关于JVM个人浅谈(一)
- 关于JVM个人浅谈(二)
- JVM虚拟机个人总结(三)
- 浅谈JVM(三)——HotSpot垃圾收集器
- 关于JVM的一点个人的理解
- JVM原理浅谈(2)
- 浅谈JVM
- 浅谈JVM
- 浅谈jvm
- 浅谈JVM
- 浅谈JVM
- 浅谈JVM
- 浅谈JVM
- 浅谈jvm
- JVM学习(三)
- jvm调优(三)
- JVM(三)
- 153Find Minimum in Rotated Sorted Array
- ajax跨域请求的解决方案
- 2015年8月12日工作日志------------赵鑫
- Android使用AIDL开发播放器报错:抱歉,应用程序已停止运行
- 囚人的旋律
- 关于JVM个人浅谈(三)
- 打开系统发送短信Activity
- Highways POJ 1751 【Prim || Kruscal】
- POJ3045 Cow Acrobats(贪心)
- linux oracle 11g创建表空间和授权用户
- hdu 5373 The shortest problem (模拟)
- oop_day04_继承、重写_20150812
- Android--Handler(承担着子线程和主线程之间的通信)
- 《基于BootStrap3的JSP项目实例教程》第2讲