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

  • Julia Graf

    Julia Graf

    6 Mayıs 2006
  • Mismag822 - The Card Trick Teacher

    Mismag822 -

    18 EKİM 2008
  • Rooster Teeth

    Rooster Teet

    11 Temmuz 2006