Anzeige:
Ergebnis 1 bis 14 von 14

Thema: Speicheraufwand für Java Arrays

  1. #1
    Registrierter Benutzer
    Registriert seit
    25.09.2002
    Beiträge
    56

    Speicheraufwand für Java Arrays

    Hallo zusammen

    Ich hab da eine eher dumme frage aber ich kanns irgendwie nicht und im i-net weis ich auch nicht wie ich das finden soll (habs probiert).
    Nun wenn ich z.b. ein Array
    double[][][] a = new double[2][4][3]
    hab, wie kann ich da ausrechnen wieviel speicher da benötigt wird?

    für die felder selbst weiss ich ja dass 2*4*3 = 24 sind und das mal 8 Byte (double) ergibt 192 Byte.
    Nun was wird für die Referenzen noch so benötigt und wieviele Referenzen sind da vorhanden? Wo wird überall eine benötigt?

    Vielen Dank

  2. #2
    Registrierter Benutzer
    Registriert seit
    05.06.2003
    Beiträge
    118
    Gib's doch einfach mal über einen ObjectOutputStream aus und schau', was rauskommt. Wobei sich bei mir die Frage stellt, wofür man diese Information bräuchte, wenn es nicht um die Speicherung auf dauerhaften Datenträgern geht.

    TME

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich würde sagen, dass du genau eine Referenz hast, a.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer
    Registriert seit
    25.09.2002
    Beiträge
    56
    Original geschrieben von anda_skoa
    Ich würde sagen, dass du genau eine Referenz hast, a.

    Ciao,
    _
    nein, das ist so nicht ganz korrekt. ich hab eine Referenz auf a, allerdings auch auf a[0], a[1], a[2] und dazu noch auf a[0][0],a[0][1].a[0][2],a[0][3] und a[1][0],a[1][1],a[1][2],a[1][3]. ich weis nun allerdings ob ich auch auf a[0][0][0], a[0][0][1], etc auch noch referenzen habe. und vorallem weis ich nicht wievel speicheraufwand eine Referenz braucht.

    Nun das ganze ist für die Schule (Prüfung etc. es kommen sicherlich solche Fragen). Allerdings hat das keiner aus der Klasse notiert und den Lehrer können wir auch nicht mehr fragen :-(

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    War nur eine Vermutung.
    Ich dachte er hat halt einfach nur die Referenz auf den Speicherbereich, die anderen Adresse lassen sich ja zur Laufzeit berechnen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    die Frage ist dann wohl auf welchem "Level" in Java die Arrays implementiert wurden. In Java ist ja keine Zeigerarithmetik möglich.

    MFG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  7. #7
    Registrierter Benutzer
    Registriert seit
    25.01.2003
    Beiträge
    222
    Java Arrays sind Objekte, deswegen wird es auch nur eine Referenz
    geben...

    gruß
    Arthur
    ---------
    irc.mrunix.de #mrunix

  8. #8
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Ja, aber ist das alles _ein_ Objekt - oder sind z.B. die Daten in eigenen Objekten? Und dann je eine Referenz drauf?

    So wie ich das alles nach Core Java verstanden habe ist das auch noch n bisschen implementierungsabhängig wie das genau läuft
    (Kann man immer sagen wenn man nicht genau weiss wies geht )

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  9. #9
    Registrierter Benutzer
    Registriert seit
    25.09.2002
    Beiträge
    56

    Thumbs up

    Also, nochmals die gesammte Aufgabenstellung, mehr hab ich auch nicht....


    Aufgabe:Gegeben ist das mehrdimensionale Array:
    double [][][] a = new double[2][4][3];

    Frage: Wie viel Platz benötigt das Array? (Referenzen sind 32 Bits gross.)

    Lösung:
    double hat 8 Bytes: 2*4*3 *8Bytes = 24*8Bytes = 192 Bytes.
    Referenzen???


    // ok, 32 bits also 4 Bytes pro Referenz, aber wieviele hab ich davon?

  10. #10
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Kannst ja mit Suns Heap Analysis Tool (Hat ohne Red) gucken: http://java.sun.com/developer/online...ook/perf3.html

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  11. #11
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich tippe wirklich auf nur eine Referenz.

    Alles andere wäre Speicherverschwendung, die JVM kann ja bei Bedarf "hinter den Kulissen" Pointerarithmetik machen.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  12. #12
    Registrierter Benutzer
    Registriert seit
    01.06.2004
    Beiträge
    11
    @invis-eo: zu welchem ergebnis kamst du jetzt letztendlich? würd mich mal interessieren.

  13. #13
    Registrierter Benutzer
    Registriert seit
    25.09.2002
    Beiträge
    56
    also ich glaube dass ich 12 Referenzen habe, bin mir aber immernoch nicht sicher, werde am do mal den lehrer fragen. wenn es 12 sind dann würde das 12 * 4 Bytes + 196 Byetes (für die variablen) was dann total 244 Bytes machen würde.

  14. #14
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Wie kommst du denn ausgerechnet auf 12?
    Ich tippe auch auf eine - wie anda_skoa - alles zusätzliche wäre definitiv Verschwendung.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •