|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
[java]Ridurre consumo memoria
Devo stampare a schermo un timer, per forza di cose devo aggiornare una stringa molto spesso... solo che controllando con memory monitor vedo che mi crea tantissimi char e String.
C'è modo per cambiare una stringa senza sprecare altra memoria? Quello che faccio ora è un banale String.valueOf(int); Il problema non sussiste se chiamo spesso il Garbage solo che mi sembra sia un'operazione un pò dispendiosa. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Usa StringBuilder invece di String: http://java.sun.com/j2se/1.5.0/docs/...ngBuilder.html
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ciao, in effetti dovevo specificare, si tratta di Java ME, e StringBuilder non è presente, però è presente StringBuffer, dovrebbe essere simile giusto?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Sì, la differenza è che StringBuffer è anche sincronizzato (un po' come la differenza che passa tra ArrayList e Vector in JavaSE).
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Sì, anzi a quanto leggo nella documentazione StringBuffer è threadsafe mentre StringBuilder non lo è, non so se a te serve anche questa peculiarità... ma ce l'ha. Di contro StringBuilder dovrebbe essere molto più veloce, ma non credo che la velocità sia ciò che ti serve
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
ok, vi spiego la situazione(banale), ho il tempo in secondi, devo solamente stamparlo.
Usando StringBuffer dovrei prima cancellare il contenuto e poi fare un append(int) giusto? Se è così allora il problema rimane perchè durante il delete vengono usati dei char, e quando faccio StringBuffer.toString() viene creata un nuovo oggetto String. Solo che il "ciclo" viene eseguito ogni 10 millisecondi quindi la spazzattura abbonda |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Già che ci sono, se creo una classe atratta con costanti statiche dichiarate con final(ad esempio immagini) quando le richiamo vengono create solo la prima volta vero?
|
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Non occorre che la classe sia astratta; non occorre che siano anche final: basta che siano membri static (e quindi sono considerati non membri di istanza, ma di classe)
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Ti ringrazio, comunque sul fatto che vengano creati al momento della prima chiamata c'ho preso?
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Mi pare che i class member vengano istanziati quando il ClassLoader carica la classe per la prima volta durante l'esecuzione.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
![]() ma scusa.. se il tempo è in secondi perchè aggiorni ogni 10ms? ![]() Non potresti controllare se il valore precedente è uguale a quello attuale e aggiornare solo in quel caso? Anche perchè potrebbe anche avere problemi di flickering un'aggiornamento ogni 10ms... in questo momento avresti dopo 10 minuti 600 oggetti anzichè 60k...
__________________
|
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
perchè il tempo principale è in centesimi, ma quello lo faccio senza stringhe, usando un array di char.
|
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Mi è venuta in mente un'altra domanda, di solito non ci faccio molto caso a scegliere se usare un int piuttosto che un short o char quando si tratta di interi, ma voi come vi comportate invece?
Ad esempio se sapete che un valore non supera una certa soglia usata un short piuttosto che un int? Mi è venuto in mente perchè programmando per cellulari la memoria non è che abbonda anzi... C'è anche diffeerenza di velocità di elaborazione tra trattare int oppure char/short? |
|
|
|
|
|
#14 |
|
Senior Member
Iscritto dal: Aug 2008
Messaggi: 308
|
Ma tu non sei quello che ha fatto quel giochino tipo worms in java? E fai queste domande da niubbo?
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Si sono curiosità più che altro, e poi non sono mica un programmatore
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
E comunque la domanda principale non era tanto banale visto che la soluzione senza spreco di memoria non esiste...
Le altre in effetti si, ma erano cose che più o meno sapevo o avevo letto solo che ormai mi son dimenticato, è da parecchio che non tocco java. Per il fatto dei tipi di dato effettivamente è una cosa che avrei sempre voluto chiedere, perchè non mi sono davvero mai preoccupdato di scegliere tra int o short salvo rari casi(i char spesso li uso invece). Comunque sia io sono parecchio "niubbo", l'importante è sapere di esserlo giusto? |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2787
|
Qual è il giochino?
Sulla velocità di elaborazione credo dipenda dall'architettura del cellulare o da come è stata implementata la JVM. Comunque perché non usi un array di char anche per i secondi? |
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Aug 2008
Messaggi: 308
|
Nulla di personale, mi sembra solo strano che uno che riesce a realizzare un gioco più o meno complesso faccia domade sui tipi o sull'allocazione statica di oggetti. Tutto qua, ma vedo che hai gia risposto.
|
|
|
|
|
|
#19 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
Volevo sapere se c'erano altre soluzione, e poi era più una fissa perchè volevo rapresentare i secondi come contatore quindi come valore crescente e non compreso fra 0 e 59. |
|
|
|
|
|
|
#20 | |
|
Senior Member
Iscritto dal: Dec 2002
Messaggi: 3359
|
Quote:
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:08.





















