gpt4 book ai didi

java - Java中如何确定对象的大小

转载 作者:太空宇宙 更新时间:2023-11-04 14:44:49 24 4
gpt4 key购买 nike

我有一个应用程序可以读取包含大量数据行的 CSV 文件。我根据数据类型向用户提供行数摘要,但我想确保不会读取太多数据行并导致 OutOfMemoryError。每一行都转换为一个对象。有没有办法以编程方式找出该对象的大小?是否有一个引用定义 VM 的基本类型和对象引用有多大?

现在,我的代码显示最多读取 32,000 行,但我还希望有代码显示读取尽可能多的行,直到我使用 32MB 内存。

最佳答案

您可以使用java.lang.instrument package .

编译此类并将其放入 JAR 中:

import java.lang.instrument.Instrumentation;

public class ObjectSizeFetcher {
private static Instrumentation instrumentation;

public static void premain(String args, Instrumentation inst) {
instrumentation = inst;
}

public static long getObjectSize(Object o) {
return instrumentation.getObjectSize(o);
}
}

将以下内容添加到您的 MANIFEST.MF 中:

Premain-Class: ObjectSizeFetcher

使用getObjectSize()方法:

public class C {
private int x;
private int y;

public static void main(String [] args) {
System.out.println(ObjectSizeFetcher.getObjectSize(new C()));
}
}

调用方式:

java -javaagent:ObjectSizeFetcherAgent.jar C

关于java - Java中如何确定对象的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24530663/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com