通过java中的对象获取内存使用率

通过java中的对象获取内存使用率,java,Java,我需要对象在运行时使用的内存用于某些分析目的。我使用的是不支持评测的netbeans 5.1,由于项目兼容性,我不能使用更高版本的netbeans。请对此提出一些替代方案并进行详细解释。这只是为了了解其工作原理: 例如,如果您有一个类,如: public class A{ int i; long l; double a[]=new double[N]; } 内存成本如下: 1) 对象开销:16字节 2) 对于inti:4字节 3) 对于长l:8字节 4) 对

我需要对象在运行时使用的内存用于某些分析目的。我使用的是不支持评测的netbeans 5.1,由于项目兼容性,我不能使用更高版本的netbeans。请对此提出一些替代方案并进行详细解释。

这只是为了了解其工作原理:

例如,如果您有一个类,如:

public class A{
    int i;
    long l;
    double a[]=new double[N];
   }   
内存成本如下:

1) 对象开销:16字节

2) 对于inti:4字节

3) 对于长l:8字节

4) 对于doublea类型的数组:8*N(数组中的元素数为double*时为8字节)+24字节开销+8字节数组引用

5) 现在添加填充字节,以便字节总数可以被8整除。

其他原语也是如此。

这只是为了了解它的工作原理:

例如,如果您有一个类,如:

public class A{
    int i;
    long l;
    double a[]=new double[N];
   }   
内存成本如下:

1) 对象开销:16字节

2) 对于inti:4字节

3) 对于长l:8字节

4) 对于doublea类型的数组:8*N(数组中的元素数为double*时为8字节)+24字节开销+8字节数组引用

5) 现在添加填充字节,以便字节总数可以被8整除。
其他原语也是如此

解决方案:将对象转换为ByteArray并获取数组的长度。它也应该在较旧的java版本中工作

“java ObjectSize”程序的输出

尺码:156

解决方案:将对象转换为ByteArray并获取数组的长度。它也应该在较旧的java版本中工作

“java ObjectSize”程序的输出

尺码:156

看起来像个傻瓜看起来像个傻瓜