Ho bisogno di tenere un sacco di oggetti stringa in memoria (centinaia di MB) e voglio tenerli in formato UTF-8 poiché nella maggior parte dei casi richiede metà della memoria l'implementazione predefinita uso.
La classe String predefinita richiede una stringa di 12 caratteri di 60 byte (vedere http://blog.griddynamics.com/2010/01/java-tricks-reducing-memory-consumption.html).
La maggior parte delle mie stringhe ha una lunghezza di 10-20 caratteri.
Mi chiedo se esiste una libreria open source che offre un wrapper per tali stringhe?
So come convertire l'array di stringhe in UTF-8 ma sto cercando una classe wrapper che fornisca tutte le funzioni di utilità necessarie (Hash, Equal, toString, fromString, ecc.).Classe stringa UTF-8 per java
6
A
risposta
2
Apache Avro ha una UTF8 wrapper class che implementa CharSequence
, ma non so il consumo di memoria di tali oggetti
Hadoop ha il Text class che ha proprio il tipo di interfaccia che si desiderio
0
Se si desidera un oggetto distinto per ogni stringa e vuoi che siano il più compatto possibile, quindi usa matrici di byte. Quello sarà 1 byte per char vs 2 e non si avrà il sovraccarico dell'intestazione String (che aggiunge probabilmente 32 byte per oggetto).
Ma ovviamente non sarebbe possibile utilizzare alcun metodo String su questi senza prima convertirsi in String.
Ma se si vuole veramente risparmiare spazio, è possibile memorizzare le stringhe back-to-back in alcuni array più grandi, con "dope vettori" per individuare le singole stringhe.
Problemi correlati
- 1. Codifica UTF8 Java
- 2. Java + Mysql UTF8 Problema
- 3. java Stringa di classe
- 4. java utf8 codifica - char, i tipi di stringa
- 5. byte UTF8 [] per conversione stringhe
- 6. Creare una stringa perl UTF8 non valida?
- 7. Come troncare una stringa UTF8 in PHP?
- 8. Esempio di stringa utf8 non valida?
- 9. Converti la stringa latin1 in utf8?
- 10. Come convertire una stringa in UTF8?
- 11. java: come convertire un file in utf8
- 12. JSON per classe Java
- 13. Sottostringa o carattere Metodo per stringhe UTF8 con 2+ byte in JAVA
- 14. PHP Utf8 decodifica Problema
- 15. Memorizzazione di una stringa come UTF8 in C#
- 16. Converti stringa UTF8 in valori numerici in Perl
- 17. Caratteri non alfanumerici di striscia dall'inglese UTF8 + stringa inglese
- 18. Come convertire una stringa in UTF8 in Ruby
- 19. Come posso creare una stringa da UTF8 in Swift?
- 20. Java Unicode per stringa esadecimale
- 21. UTF8 in elaborazione in C
- 22. android come utilizzare la risorsa stringa in una classe java
- 23. bug Java? Perché extra zero byte nella codifica utf8?
- 24. uscita Conversione di query MySQL per utf8
- 25. Come usare iconv per la conversione utf8?
- 26. Ottieni l'istanza della classe per nome della stringa della stringa
- 27. Java come creare un'istanza di una classe da stringa
- 28. Regex per rimuovere caratteri non alfanumerici da stringhe UTF8
- 29. Come sovrascrivere StringHttpMessageConverter DEFAULT_CHARSET per utilizzare UTF8 nella primavera 4
- 30. PDFTK problemi fill_form utf8
http://docs.oracle.com/javase/tutorial/i18n/text/string.html – Doorknob
Java memorizza tutte le stringhe internamente in UTF-16, quindi 12 stringhe di caratteri sono 24 byte internamente. Senza contare l'overhead dell'oggetto obbligatorio, da dove viene quella cifra di 60 byte? – fge
... minimo 24 byte, poiché le codifiche UTF sono di lunghezza variabile (consentito, è necessario utilizzare alcuni caratteri seriamente esotici per superare i 24 byte nell'esempio dell'OP) –