|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
有了这样一个呼声:让java代替C语言成为基本语言。这些足以说明java简单易学的这个优点。其次,java的功能强大,前面我也提到了,EJB3.0的推出使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倍(N>2),有些范例的内存占用更是夸大(任意想下就晓得了)。因而,大概的话应只管少利用包装类。在JDK5.0今后,由于到场了主动范例装换,因而,Java假造时机在存储方面举行响应的优化。
援用范例
对象援用范例分为强援用、软援用、弱援用和虚援用。
强援用:就是我们一样平常声明对象是时假造机天生的援用,强援用情况下,渣滓接纳时必要严厉判别以后对象是不是被强援用,假如被强援用,则不会被渣滓接纳
软援用:软援用一样平常被做为缓存来利用。与强援用的区分是,软援用在渣滓接纳时,假造时机依据以后体系的残剩内存来决意是不是对软援用举行接纳。假如残剩内存对照严重,则假造时机接纳软援用所援用的空间;假如残剩内存绝对充裕,则不会举行接纳。换句话说,假造机在产生OutOfMemory时,一定是没有软援用存在的。
弱援用:弱援用与软援用相似,都是作为缓存来利用。但与软援用分歧,弱援用在举行渣滓接纳时,是必定会被接纳失落的,因而其性命周期只存在于一个渣滓接纳周期内。
强援用不必说,我们体系一样平常在利用时都是用的强援用。而“软援用”和“弱援用”对照少见。他们一样平常被作为缓存利用,并且通常为在内存巨细对照受限的情形下做为缓存。由于假如内存充足年夜的话,能够间接利用强援用作为缓存便可,同时可控性更高。因此,他们罕见的是被利用在桌面使用体系的缓存。
而学习JAVA我觉得最应该避免的就是:只学习,不思考,只记忆,不实践! |
|