java中好像没有办法,只能一个个去算可以要求sun给一个sizeof方法。

解决方案 »

  1.   

    sizeof()在C\C++中才有的,因为在不同的系统中对象的大小是不定的,而在java中基本类型和对象的大小是固定的,换句话说在不同的系统下都是相同的。这样通过虚拟机可在一个系统中编译,在不同的系统中运行。实现sizeof()的方法是没有意义的。
      

  2.   

    无论在java还是在c++中,静态函数和普通函数是不占对象的大小的(虚函数占4个字节),只有非静态成员变量才占空间大小。(C++变量的声明次序也决定对象的大小)
      

  3.   

    你可以将某个对象定义成数组(元素要多),这样有一部分对象就会在内存中依次分配地址(不一定去不如此,但元素多时会有几个连续的),找出这几个用他们的toString()方法(没有被重写的)得到他们的地址,然后就不用我说了
      

  4.   

    目前的Java虚拟机的内存管理机制还不完善。无法准确完成,不信可查看Java虚拟机规范。
      

  5.   

    是啊,查了好多地方。
    看来这个问题目前是无解了。
    有一点始终不明白,java自称自己是面向对象的语言,但是却连自己在内存中的所有对象一共加起来有多少这个问题,却没有很快捷或者清晰的方法得出。不过,想想也对,如果一个英语高手,你问他单词量有多少,估计他也只能说个大概。一个朋友提醒我的一个方法,是计算时间差,然后多次算平均值。这样,太费事了。而且还不准确。
      

  6.   

    VVV_lucky(*太阳*) 
    运行时的当然可以知道,编译时的目前来说应该无法知道。
      

  7.   

    关注,
    不过觉得 0flying0(小笨猫) 说得有点道理。
      

  8.   

    javacomte(基督山伯爵) 
    你可以将某个对象定义成数组(元素要多),这样有一部分对象就会在内存中依次分配地址(不一定去不如此,但元素多时会有几个连续的),找出这几个用他们的toString()方法(没有被重写的)得到他们的地址,然后就不用我说了
    --------------------------------------------------------------------------这方法不错,,,
    支持。。