【JAVA优化编程】内存管理之——(4)数组的创建

4  数组的创建

    数组空间的申请分为显式申请与隐式申请两种。显式申请是指在程序中直接给出数组的类型与长度,例如:

int [] intArray = newint[1024]; 

    上面的这行代码就是显式地向系统一次性申请了大小为1KB的整数类型的内存空间,这样的声明方式一般出现在对文件或网络的资源读取的处理代码中,往往用来作为数据读取的缓冲区,以提高读取效率。由于我们不知道具体读取的内容的长度,因此,我们只能通过这种方式来读取相关资源,这样做显然有些弊端,例如,文件或网络资源的长度不可能是你所给定的数组长度的整数倍,或者文件、网络资源的长度小于你所申请的数组的长度,这就造成了系统内存资源浪费。隐式申请是在声明数组对象时不知道将要得到的数组的具体长度,例如:

int [] intArray = obj.getIntArray();
System.out.println("整型数组长度:" + intArray.length());

    在这行代码中我们事先并不知道obj.getIntArray()到底返回的数组长度是多少,这是在程序运行时确定的,因此这里不存在上面的显式申请数组浪费内存的问题,因为数组的长度是由系统决定的,因此这种方法是提倡使用的。

    如果遇到数组中所保存的元素占用内存空间较大或数组本身长度较大的情况,我们可以采用之前所讲到的软引用的技术来引用数组以“提醒”JVM及时回收垃圾内存,维护系统的稳定性。例如:

... ...
Object obj = new char[1000000];
SoftReference ref = new SoftReference(obj);
... ... 

    由于数组对象长度较长,占用了较大的内存空间,因此我们对obj采用了软引用的处理方式达到合理使用系统内存的目的。

你可能感兴趣的:(【JAVA优化编程】内存管理之——(4)数组的创建)