- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
                        查看更多
                        
                    
                
JVM 概念之 Java 对象的大小与引用类型
参考文献
1.JVM  调优总结(二)	- 一些概念
2.Java 深度历险(四)——	Java 垃圾回收机制与引用类型
正文
在参考文献	1 中,总结了	JVM 概念中的	Java 对象的大小,
以及三种引用类型的定义与区分。
Java 对象的大小
基本数据的类型的大小是固定的,这里就不多说了。对
于非基本类型的 Java 对象,其大小就值得商榷。 在 Java 中,一个空 Object 对象的大小是 8byte ,这个大小只是保存堆中一个没有任何属性的对象的大小。看下面语句:
Object ob = new Object();
这样在程序中完成了一个	Java 对象的生命,但是它所
占的空间为:
4byte+8byte
。 4byte
是上面部分所说的
Java
栈中保存引用的所需要的空间。而那
8byte
则是
Java
堆中
对象的信息。因为所有的	Java 非基本类型的对象都需要默
认继承 Object 对象,因此不论什么样的	Java 对象,其大小
都必须是大于	8byte 。
有了 Object 对象的大小,我们就可以计算其他对象的大
小了。
Class NewObject {
int count;
boolean flag;
Object ob;
}
其大小为:空对象大小 (8byte)+int	大小 (4byte)+Boolean
大小 (1byte)+ 空 Object 引用的大小  (4byte)=17byte  。但是因
为 Java 在对对象内存分配时都是以	8 的整数倍来分,因此
大于 17byte  的最接近	8 的整数倍的是	24 ,因此此对象的大
小为 24byte 。
这里需要注意一下基本类型的包装类型的大小。因为这
种包装类型已经成为对象了,因此需要把他们作为对象来看
待。包装类型的大小至少是	12byte( 声明一个空	Object 至少
需要的空间 ),而且 12byte  没有包含任何有效信息,同时,
因为
Java
对象大小是
8 的整数倍,因此一个基本类型包装
类的大小至少是
16byte
。这个内存占用是很恐怖的,
它是使
用基本类型的
N 倍 (N2)
,有些类型的内存占用更是夸张
( 随
便想下就知道了
)。因此, 可能的话应尽量少使用包装类。
在
JDK5.0  以后,因为加入了自动类型装换,因此,	Java 虚拟
机会在存储方面进行相应的优化。
引用类型
对象引用类型分为强引用、软引用、弱引用和虚引用。强引用 :就是我们一般声明对象是时虚拟机生成的引用,
强引用环境下,垃圾回收时需要严格判断当前对象是否被强引用,如果被强引用,则不会被垃圾回收。
软引用 :软引用一般被做为缓存来使用。 与强引用的区别是,软引用在垃圾回收时,虚拟机会根据当前系统的剩余内
存来决定是否对软引用进行回收。如果剩余内存比较紧张,则虚拟机会回收软引用所引用的空间 ;如果剩余内存相对富裕,则不会进行回收。 换句话说,虚拟机在发生 OutOfMemory 时,肯定是没有软引用存在的。
弱引用 :弱引用与软引用类似, 都是作为缓存来使用。 但与软引用不同,弱引用在进行垃圾回收时,是一定会被回收掉的,因此其生命周期只存在于一个垃圾回收周期内。
强引用不用说,我们系统一般在使用时都是用的强引用。
而“软引用”和“弱引用”比较少见。他们一般被作为缓存使用,而且一般是在内存大小比较受限的情况下做为缓存。因为如
果内存足够大的话,可以直接使用强引用作为缓存即可,同时可控性更高。因而,他们常见的是被使用在桌面应用系统的缓存。
                您可能关注的文档
- 2019届高三衡水中学状元笔记物理课时作业:万有引力与航天同步测试题.docx
- 2019届高考英语复习基础阅读理解ADisregardofOurHumanity课文原文及教案.docx
- 2019届高考英语复习基础阅读理解DoPeopleofPraiseHelporHurt?课文原文及教案.docx
- 2019届高考英语复习基础阅读理解FakeForeignTeachers课文原文及教案.docx
- 2019版二轮复习英语练习:专题三习题讲评课2Word版含解析.docx
- 2019版二轮复习英语练习:专题五习题讲评课1Word版含解析.docx
- 2019版二轮复习英语练习:专题六应用文写作常见8大文体Word版含解析.docx
- 2019陈述句改成反问句专题练习6则附答案教育.doc.doc.docx
- 2019高中化学竞赛练习讲义专题2:氨水硝酸硫酸有答案.docx
- 2020届高考一轮复习先秦史测试.docx
 原创力文档
原创力文档 
                        

文档评论(0)