小编Gil*_*lad的帖子

如何查找对象的大小(包括包含的对象)

我想估计一个物体占用的大小.为了获得对象的大小,我可以使用

为此我可以使用Instrumentation.getObjectSize(myObject),但这会给我一个"浅"的尺寸.我想获得Object的大小,包括它引用的对象的大小.

我的想法是我需要获取对象的大小,然后遍历所有非静态或基元的对象字段,并获取它们指向的对象的大小并递归地执行此操作.

当然,我不想计算对象大小几次,或者陷入循环,所以我必须记住我们已经计算过的大小的对象.

是否有更快或更标准的方法来做到这一点?

我的代码看起来像这样:

public static long getObjectSize(Object obj)
{
    return getObjectSize(obj, new HashSet<Object>());
}

private static long getObjectSize(Object obj, Set<Object> encountered)
{
    if (encountered.contains(obj))
    {
        // if this object was already counted - don't count it again
        return 0;
    }
    else
    {
        // remember to not count this object's size again
        encountered.add(obj);
    }
    java.lang.reflect.Field fields[] = obj.getClass().getFields();
    long size = Instrumentation.getObjectSize(obj);
    // itereate through all fields               
    for (Field field : fields)
    {
        Class fieldType = …
Run Code Online (Sandbox Code Playgroud)

java memory size object

9
推荐指数
1
解决办法
7388
查看次数

使用不同的JRE在ant中运行Java任务

我尝试使用Ant执行java类.我用过这个任务

<java... >
Run Code Online (Sandbox Code Playgroud)

但是当它运行时,我得到了这个:

java.lang.UnsupportedClassVersionError: mypackage/myTest: Unsupported major.minor version 51.0
at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:194)
...
Run Code Online (Sandbox Code Playgroud)

我的蚂蚁没有在Java 1.7上运行.我看到对于javac任务,您可以指定target设置java版本.有没有办法指定要与java任务一起使用的特定JDK?

java ant

4
推荐指数
1
解决办法
4739
查看次数

标签 统计

java ×2

ant ×1

memory ×1

object ×1

size ×1