Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    561

    Quanto occupa in memoria una stringa?

    Ciao, vorrei sapere quanto occupa in termini di byte in memoria una String.



    tulipan

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Quanto occupa in memoria una stringa?

    Originariamente inviato da tulipan
    Ciao, vorrei sapere quanto occupa in termini di byte in memoria una String.
    Beh, un calcolo preciso è difficile da fare anche perché bisognerebbe vedere bene come sono implementate certe cose nella JVM e anche nella classe String. Comunque una stima approssimativa non è difficile, la classe String ha solo 4 campi di istanza:

    private final char value[];
    private final int offset;
    private final int count;
    private int hash;

    Il primo è proprio l'array che tiene i caratteri. Quindi per una stringa di 100 caratteri, certamente sono occupati come minimo 100*2+4+4+4 = 212 byte.

    Poi c'è anche da considerare la questione dello sharing interno di quell'array 'value'. Già perché se ad esempio fai un substring() di una stringa, i due oggetti String (quello originale e quello nuovo) in realtà condividono lo stesso identico array dei caratteri e cambia solo offset/count.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Concordo sulla tua stima. Una nota per Tulipan: nota che ogni carattere occupa due byte.
    Infatti Java usa la rappresentazione UTF-8 per i singoli caratteri (per i tipi di dato primitivi si può vedere, per esempio, la pagina http://java.sun.com/docs/books/tutor...datatypes.html).
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.