Ciao, vorrei sapere quanto occupa in termini di byte in memoria una String.
tulipan
Ciao, vorrei sapere quanto occupa in termini di byte in memoria una String.
tulipan
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:Originariamente inviato da tulipan
Ciao, vorrei sapere quanto occupa in termini di byte in memoria una String.
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.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
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 !