public class Test {
public static void main(String[] args) {
int a[] = new int[0];
if ( a == null) {
System.out.println("null");
}
}
}
------解决方案--------------------
------解决方案-------------------- 对于第一个问题我看到一篇帖子:http://blog.csdn.net/hoszb/article/details/5846069 你看下对你有木有帮助。
------解决方案-------------------- Java没有提供现成的函数去计算对象的内存空间,不过可以用大量产生某个对象然后计算平均值的方法近似获得该对象占用的内存。写个例子给你:public class Test{ long f1 = Runtime.getRuntime().freeMemory(); for(int i=0;i<1000;i++) { MyObject t = new MyObject(); } long f2 = Runtime.getRuntime().freeMemory(); System.out.println((f1-f2)/1000);//输出每个对象占用的字节数 } }答案补充 怎么会没有意义呢?比如说开发一个自动化测试工具,需要分析代码的内存效率。答案补充 关于用序列化来计算对象的内存大小,很多人都以为这种方法可行,但其实不行。1. jvm的字符编码是Unicode(16位),而序列化输出的文本是ANSI或UTF-8编码(8位),所以这在对象大小的比较上就产生了很大的差别。2. 序列化的结果是以文本的形式记录一个对象的状态,文本是不具有java里面的丰富的类型的,比如说int、long等等,这在内存大小上就会产生重大的差别。比如说一个int,在内存里总是4个字节,而保存到文本后就不一定了,这个数字越大占用的空间就越大(需要更加多的文本字符去记录它)。关于这点你可以自己做个测试,将10000个1序列化和将10000个1000序列化,看看大小相差多少。
------解决方案-------------------- 第一个真不知道,哈哈 第二个是肯定的 第三个视情况而定吧 第四个异常谁捕捉谁处理,处理不了就交给上一级处理、、、