2016-04-20 4 views
-1

Ich möchte die Größe des Objekts, das ich mit java.reflection erstellt. Hier ist der Code. Ich verstehe nicht, was ich falsch mache. Wenn ich das Objekt bekomme, versuche ich das Instrument Interface zu benutzen, aber es funktioniert nicht. Danke für Ihre Hilfe!bekommen Objektgröße in Bits mit Reflexion in Java

+0

Welchen Teil der oben nicht funktioniert? –

+0

Das Teil, das gedruckt werden muss, um die Größe des Objekts zu trösten –

Antwort

0

Nicht sicher, ob ich Ihre Frage richtig verstanden habe, aber ich denke, Sie fragen sich, warum die Größe des Objekts, das Sie drucken, (fast) immer gleich ist. Einige Beispiele Ihrer analyzeData Methode:

analayzeData("123456789123456789123456789"); // will print a size of 16 
analayzeData("123456789"); // will also print a size of 16 
analayzeData(new BigInteger("1")) // will print a size of 32! 
analayzeData(Arrays.asList(1, 2, 3, 4, 5)); // will print a size of 16 

Der Grund für diese kontra-intuitive Ergebnisse ist, dass Instrumentation.getObjectSize(Object) die (geschätzte) Größe des Objekts zurück selbst und nicht die Größe des Objekts und alle es ist Mitglieder/Felder.

So für ein ArrayList mit 1000 Elementen werden das Ergebnis noch , sein, weil das die Größe der ArrayList ist - die Größe seiner Mitglieder müssen gesondert berechnet werden.

bearbeiten

Hier sind einige Anleitungen, wie zu verwenden, Instrumentierung with maven und with ant

+0

Das Problem ist mit der Instrumentierung, die nichts zurückgibt –

+0

@OfirN wie rufen Sie Ihre Tests auf? Ein ähnliches Setup wie hier [http://blog.javabenchmark.org/2013/05/java-instrumentation-tutorial.html] funktioniert für mich – nyname00