SORU
9 EYLÜL 2008, Salı


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 OutOfMemoryErrorler. 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
9 EYLÜL 2008, Salı


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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • AceHoodVEVO

    AceHoodVEVO

    12 Mayıs 2009
  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009