Java, nesne boyutunu belirlemek için en iyi yolu nedir?
Örneğin, veri satır yığınları ile bir CSV dosyasını okumak için bir uygulama var. Verdiğim kullanıcı bir özet satır sayısını temel veri türleri, ama ben istiyorum emin olmak için okumuyorum, çok fazla satır ve neden OutOfMemoryError
ler. Her satır bir nesne çevirir. Kolay bir şekilde bu program aracılığıyla nesnenin boyutunu öğrenmek için var mı? Büyük ilkel türleri ve nesne başvurularını VM
için nasıl tanımlayan bir referans var mı?
Şu an için okuyun diyor bu kod var32.000 satırayrıca diyor bu kodu kullandım kadar mümkün olduğunca çok sayıda satır okumak istiyorum , ama32 MBbellek. Belki farklı bir soru olacak ama yine de bilmek isterim.
CEVAP
java.lang.instrument package kullanabilirsiniz
Derleme ve bir KAVANOZUN içinde: bu sınıfa koymak
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);
}
}
Sizin için aşağıdaki MANIFEST.MF
ekleyin:
Premain-Class: ObjectSizeFetcher
Kullanım getObjectSize:
public class C {
private int x;
private int y;
public static void main(String [] args) {
System.out.println(ObjectSizeFetcher.getObjectSize(new C()));
}
}
Diliyorum:
java -javaagent:ObjectSizeFetcherAgent.jar C
Java bir Toplama filtresi için en iyi ...
Nasıl bir nesne's sınıfı (Java) b...
Java sabitler uygulamak için en iyi yo...
Java kullanıcı ev dizinini bulmak için...
Bir PHP komut dosyası komut satırı vs ...