Announcement

Collapse
No announcement yet.

Speicherverbrauch einer Klasse zur Laufzeit

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Speicherverbrauch einer Klasse zur Laufzeit

    Hallo<br>
    <br>
    Ich habe z.B. eine Klasse in dieser Form:<br>
    public class TEST {<br>
    String str;<br>
    <br>
    private void Funktion1(){<br>
    .....<br>
    .....<br>
    }<br>
    <br>
    public void Funktion2(){<br>
    ....<br>
    ....<br>
    }<br>
    }<br>

    <br>
    TEST myTEST = new TEST();<br>
    <br>
    Frage: wie viel Speicher belegt nun diese Instanz?<br>
    <br>
    Andreas<br>

  • #2
    Das ist schwer abzuschätzen, denn man kann die Art und Weise wie das System dies umsetzt nicht feststellen. Ansonsten solltest du alle Primitiven Datentypen anhand ihrer bytes zusammenzählen, sowie "Pointer" mit 64bit.

    Es gäbe da aber noch eine weitere Möglichkeit. Du kannst ja den von Java resevierten und belegten Speicher mit <b>java.lang.System</b> abfragen. Nun ist allerdings beim Start schon ein Teil des Speichers belegt was, das Abschätzen sehr schwierig macht. Aber es gibt eine Möglichkeit es ungefähr festzustellen. Dabei startest du das Programm, wertest zum ersten mal die Speicherbelegung aus. Dann erstellst du so an 1000 - 10000 Instanzen dieser Klasse und speicherst diese in ein Array. Nun prüfst du zum zweiten mal die Speicherbelegung. Die Differenz durch die Anzahl der Instanzen und fertig ist das Ergebnis.

    Vor allem bei sehr vielen Instanzen wird der Unterschied verschwindend gering.

    mfG Tobias Oelgart

    Comment

    Working...
    X