Newsgroup: it.comp.hardware.palmari
Titolo: "Memory Garbage allocate"? Cali di memoria spiegate... 8=)

*** Premessa ***
Prima abbiamo trovato il grave limite di memoria disponibile nell'Asus A730.
Poi l'abbiamo scovato anche sull'Hp 4700, anche se un po' meno grave (a 
proposito: c'è un gran darsi da fare tra i terzi produttori di hardware per 
proporre upgrade di memoria... ;)
Poi, soprattutto grazie all'Avvocato Epifani, abbiamo approntato la teoria 
per la quale Windows Mobile 2003 richiede una gran quantità di memoria e i 
costruttori sono restati spiazzati (tranne gli ingegneri della 
FujitsuSiemens, sembrerebbe).
Poi mi è arrivato il FSC PocketLoox 720 (8-)))))))).
Poi ho verificato che, nell'uso normale, il pda sembra non rilasciare 
memoria ram (o almeno la rilascia solo in parte) dopo la chiusura dei 
programmi (fino a rubare una decina di mb, non oltre, credo).
Quindi abbiamo capito che oggi, se si vuole acquistare un palmare con 
Windows Mobile 2003 Se, questo dovrebbe avere una buona quantità di Ram (a 
mio avviso il minimo sarebbe 128mb).
Ed ora?
Ed ora la spiegazione di tutto ciò:-)
*** Contenuto ***
1) Un capoccione Mvp chiede ad un altro capoccione della Microsoft:
"Q: Are there any improvements to the Compact Framework in 2003 Second 
Edition?"
E questi risponde:
"A: 2003 Second Edition ships with the .NET CF 1.0 SP2."
(Per chi volesse leggersi tutta la conferenza stampa, il link è questo: 
http://msdn.microsoft.com/chats/transcripts/mobileembedded/embedded_051304.aspx
 ) 
.
Dunque, al punto uno di questo post, sappiamo che Wm2003SE porta con sè, nel 
sistema operativo, una nuova release del .NET CF. E quali features avanzate 
avrà mai la SP2?
2) E c'è da chiederselo? La .NET CF 1.0 SP2 migliora le prestazioni del 
sistema operativo e delle applicazioni ad esso aggiornate, migliora le 
prestazioni grafiche, è più veloce nel caricamente delle risorse, rende più 
dinamiche le operazioni di modifica delle proprietà Control.Enabled e 
Control.Parent (non chiedetemi cosa significa... ehehe... mi sebrava carino 
dirlo... ;). Insomma per chi vuole scaricare la nuova release e installarla 
sul Wm2003 prima edizione, o semplicemente inebriarsi nel leggere un 
mirabile esempio di autoincensazione, il link è questo:
http://www.microsoft.com/downloads/details.aspx?displaylang=it&FamilyID=359ea6da-fc5d-41cc-ac04-7bb50a134556
 .
3) A questo punto, però, viene spontaneo chiedersi come faccia questa SP2 a 
dare un imput prestazionale così evidente (in effetti Wm2003SE sembra 
davvero più veloce... tanto che il solo incremento dai 400mhz dell'HP 2210 
ai 520mhz del Loox 720 da solo non basterebbe a giustificare...). Ebbene con 
questa release del .NET Cf viene introdotto un nuovo metodo di *** gestione 
della memoria ***. Proprio così, avete capito esattamente: un 
"rivoluzionario" processo;)
Leggiamo: "The CF sets aside a block of memory to store jitted code when it 
starts up." - siamo tornati ai capoccioni di prima - "It also allocates 
memory for internal data structures (ex. for classes and methods). That 
memory will not be released back to the OS. However, free memory that was 
used for objects will be released back to the OS when appropriate." Dunque, 
per chi non conoscesse il tedesco, sintetizzo (anche da altre letture 
colte): con Wm2003 SE il sistema "alloca" all'avvio una porzione di memoria 
di base più o meno cospicua che non verrà mai liberata (ora si comincia a 
capire perché dai 64mb di ram si scende ai 48... no?;). Quindi al lancio di 
ogni applicazione il sistema riserva altre quote di memoria (ciascuna per 
programma) al fine di consentire all'applicazione stessa una gestione più 
"immediata" e meno "dispersiva" (i tecnici puristi inorridiranno) dei propri 
processi interni. E difatti devo sottolineare che sul mio Loox 720 "Pocket 
Athlete" schizza che è un piacere (è il mio gioco preferito;), tanto che 
sono riuscito a bissare tutti i record mondiali che avevo segnato sul 2210, 
soprattutto nel tiro al piattello:)
4) Signori, siamo davanti al grandioso "Automatic Memory Management": il 
sistema concede una fetta di memoria ad un applicativo, in modo che esso 
possa girare senza perdere tempo a cercarla altrove. Ma c'è di più: "When 
the application creates the next object, the garbage collector allocates 
memory for it in the address space immediately following the first object. 
As long as address space is available, the garbage collector continues to 
allocate space for new objects in this manner."
Per chi non voglia perdersi quest'altra pietra miliare del tecnicismo più 
trionfante, il link da cliccare è il seguente:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconautomaticmemorymanagement.asp
 .
5) Più veloce, più efficiente, anche più bello se ci si pensa. Wm2003SE è un 
gran passo avanti, no? (Obi-Wan, quanto mi ami?:-) Ma... c'è un "ma". 
Innanzitutto perché questa "piattaforma" per lo sviluppo di applicativi 
possa dare il meglio di sè, è necessario che i programmatori inseriscano 
nelle loro sfilze di numeretti e simboli strani anche una parte di codice 
che "autorizzi" appieno il processo di gestione automatica della memoria. E, 
*** soprattutto ***, che questo codice si chiuda con le formulette 
necessarie acché il sistema possa rilasciare la memoria allocata una volta 
chiusa l'applicazione. Si vede il sole, ora, e?;)
La guida della Giovane Marmotta Programmatrice (Programming for garbage 
collection), al capitolo "Cleaning up unmanaged resources", dice: "... it is 
recommended that you implement a public Dispose or Close method that 
executes the necessary cleanup code for the object".
Il link: 
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconprogrammingessentialsforgarbagecollection.asp
 .
6) Quante applicazioni girano sul mio (già amato:-) Loox 720? Una marea, 
demo a più non posso scaricate da pocketgear e tutte installate nelle prime 
ore a "scopo sperimentale". Quante di queste implementeranno a dovere il 
"Garbage collecting"? Ma, soprattutto: quante di queste saranno state 
programmate "a regola d'arte" per rilasciare la memoria allocata una volta 
chiuse?
Ah... saperlo... ... Due?... nahh... troppe;)
Ciao, Gianni:-)
P.s. Ad ogni buon conto, a parte l'ondata di cavolate che ho appena sparato, 
preciso questo a proposito del FSC Pocket Loox 720: pur non avendo avuto 
alcuna pietà nell'installazione dei programmi (molti dei quali posizionati 
direttamente nella ram), pur avendo avuto premura in misura equivalente a 
zero di non sprecare la memoria "operativa", mi ritrovo con un palmare 
davvero veloce e stabile, e con 68mb di ram residui (se lo resetto tornano 
circa 75...).
Domani se posso lo recensisco. Poi da lunedì torno a lavorare;)
P.p.s. Meno male che il "Garbage collector" dopo un po' incomincia a non 
riservare più memoria... sennò altro che 10 mb di ram perduti nel nulla...
P.p.p.s Gianvincenzo? Hai annullato l'ordine? Ti consiglio uno splendido 
Loox 720... ;)
P.s.def. C'è qualche tecnico informatico qui che puoi spiegarmi che cosa ho 
detto fino ad ora?

 per chi non conoscesse il tedesco, sintetizzo 
                             ^^^^^^^
<mode bastardo>
Arifacce cor tedesco :-D
</mode bastardo>
Complimenti, il tuo post è interessantissimo e le tue ipotesi non 
fanno una piega. Sarà interessante vedere in che modo i programmatori 
in futuro terranno conto di questa peculiarità durante la compilazione 
del software.
Ciao :)

 detto fino ad ora?
Eccellente.
Completa risposta al problema ed....alla mia domanda stupida.
(che partiva dal presupposto che, come al solito, fosse la gestione
della VGA, intesa come parte estranea alla WM2003, a creare il problema)
La richiesta di testare il comportamento del dispositivo senza l'uso 
della VGA (e qui sta la stupidaggine) era infatti tesa ad ottenere la
conferma della causa del problema.
Quello che non avevo considerato è la maledetta abitudine di MS di 
risolvere i problemi di velocità, di un sistema abbastanza pesante,
sfruttando la memoria. (in analogia al non chiudere i programmi ma 
lasciarli attivi in memoria per disporne immediatamente se richiamati).
Cosa inoltre aggravata dal fatto che nell'aggiornare il software i
vari programmatori si sono preoccupati più di farlo girare sotto S.E.
ignorando magari il comportamento della gestione automatica della 
memoria in fase di chiusura. 
Tutto quello che hai scoperto mi fa pensare che, quando uscirà il nuovo
WinCE 5.O net, nel solito balletto degli improbabili aggiornamenti, 
avranno qualche chance solo i palmari con almeno 128Mb di Ram e forse
non basterà.
P.S. Non fare il modesto. Sai benissimo cosa hai detto finora :)
     Non si mette insieme tutta una serie di stralci di testi e di
     cause e effetti in sequenza senza saperne il significato :-))  
 
Ciao,Franco 
www.efsoft.it
 
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
Continuando a rimuginare la cosa mi viene in un ulteriore dubbio.
Il comportamento sarà lo stesso per i palmari dotati di accelleratore
grafico ?   
Che ne pensi?


 Che ne pensi?
Dalle letture colte di ieri mi è sembrato di capire che la Vga e il 
landscape non si ricollegano assolutamente col problema della ram fantasma. 
Ergo, penso proprio di sì. Tral'altro il supporto nativo del 3d hardware 
sarà implementato soltanto con la prossima edizione del Wm.
Ciao, Gianni. 

 P.S. Non fare il modesto...
Credimi: mosso dal fortissimo desiderio di salvare la pelle ai colleghi 
ppcisti e di capirci qualcosa, sono stato semplicemente fortunato nella 
ricerca:-)
Ciao, Gianni. 

 </mode bastardo>
Perché? Era francese?
Ciao, Gianni;) 

 programmi (fino a rubare una decina di mb, non oltre, credo).
...scusa la battutaccia, ma che ne dici di proporre a M$ di rinominare
"Windows 2003SE" in "Windows 3.1"?
Quanto hai detto circa la memoria non rilasciata dalle applicazioni...
mi ricorda TANTO i tempi DOS-Win 3.1.
Fabrizio :-)

 Fabrizio :-)
Ciao, Gianni:-) 

proporre upgrade di memoria... ;)
...
Mie osservazioni:
Ricondurre tutto (nel bene e nel male) al .Net Compact Framework SP2,
benchè io lo odi e non lo usi, sinceramente mi sembra un po' azzardata
come ipotesi.
Le mie osservazioni:
- Il Service Pack 2, per quanto ne so, migliora le prestazioni delle
sue applicazioni ( quindi di quelle che richiedono il Compact
Framework per girare, quelle 'managed' per intenderci) non del sistema
operativo in se' e nemmeno delle applicazioni 'native'.
- Dove hai letto che nel SP2  viene introdotto "un nuovo metodo di ***
gestione della memoria *** " ?
- Non mi sembra che Pocket Athlete richiedesse il .net cf per girare
quindi perche' ricondurre a questo il merito della maggiore velocita'?
- In relazione al punto 5, be'...la gestione 'accorta' della memoria
e' raccomandazione valida in generale, non solo in questo caso.
Diciamo invece che le applicazioni vengono praticamente chiuse sempre
con un task manager estraneo al sistema operativo e cio' non sempre
consente di rilasciare tutta la memoria in modo corretto.
-- 
Fondamentalmente

 
In realtà tutte quelle che sono e saranno sviluppate con .NET Framework, 
per tutte le altre, infatti il cuore della gestione della memoria per le 
applicazioni .NET è appunto il "garbage collector".
Per quelle scritte in C ad esempio, dovrà essere il programmatore ad 
occuparsi di rilasciare la memoria durante l'usa della applicazione.
Per quelle scritte in VB per palmari non so non l'ho mai usato, ma credo 
che funzionarà malissimo.
-- 
Massimiliano G.
www.birreonline.net
God blesses the men who intenvented beer

 
In effetti implementa un nuovo metodo in quanto funziona in modo 
differente rispetto al "garbage collector" di .NET, in quanto 
l'algortitmo tende a scaricare prima la memoria rispetto a quello che fa 
in .NET per pc.


in .NET per pc.
Nel passaggio SP1->SP2 e' cambiato?
Link?
-- 
Fondamentalmente

 che funzionarà malissimo.
Thanks.
Ciao, Gianni. 

 consente di rilasciare tutta la memoria in modo corretto.
Esatto. E' per questo che nelle nuove applicazioni i programatori dovranno 
essere maggiormente "accorti".
Desidero però fare una precisazione: scendere in un campo così profondamente 
tecnico non mi interessa particolarmente. Questo sia perché non è ho la 
competenza, sia perché il discorso finirebbe per interessare soltanto tre o 
quattro persone.
Quello che mi interessava capire e "dire" è legato al problema della memoria 
fantasma.
Ciao, Gianni. 

 detto fino ad ora?
Non sono un informatico, quello che posso dirti e che capisco io è che
quanto hai detto non fa che confermare che qui si continua a spingere le
logiche antiutilizzatore che hanno caratterizzato un decennio di mercato
Microsoft nei pc. Si è sempre detto che i palmari non sono e non devono
diventare dei personal computer tascabili caratterizzati dalle solite
"strane" limitazioni - create ad arte per stimolare l'obsolescenza - e
devono essere utilizzabili dalla gente comune dandogli vantaggi anzichè
richiedergli mal di testa e comprensione di logiche e dinamiche che non
devono interessare chi compra pda per avere in mano degli strumenti semplici
e fruibili.
Nulla quaestio sul fatto che un informatico possa trovare maggiori vantaggi
nell'utilizzo di un PocketPC, ma gli informatici sono lo zero virgola
qualcosa per cento della popolazione.
Continua ad essere così, la gente comune continua a cadere nella trappola di
MS credendo di aver bisogno di un'astronave per fare cinquecento metri nel
traffico, peggio per loro e buon per chi rimane o si avvicina a Palm OS od a
qualsiasi altra piattaforma che non esca da MS.
Per la cronaca sto provando un Tungsten|T5 da pochi giorni ed ho la netta
sensazione di avere nuovamente in mano un Palm vecchia scuola, di quelli
immediati da usare e con autonomia infinita :)

 essere maggiormente "accorti".
In realtà se il programmatore sa lavorare "bene" con .NET per pc, 
portare l'applicazione su ppc li costerà meno fatica rispetto a 
riscriverla ad esempio in C, questo  perchè .NET libera la memoria 
d'ufficio mentre il rischio di lasciare della memoria allocata in C è 
molto più alto, quindi sviluppare applicazione usante .NET per ppc è in 
realtà più semplice e porta a dimnuire il numero di errori che si 
potrebbero commettere.


 Continua ad essere così...
Il discorso non mi interessa, o meglio: sicuramente non mi interessa in 
questo thread. Se vuoi ne apriamo uno a parte.
Comunque la retorica del Ms è il diavolo e Palm è l'angelo è talmente 
scontata che sarei persino pronto ad offrirti una birra se tu la smettessi 
di spostare il discorso sempre su questi livelli. E come tu ben sai le 
retoriche di questo genere sono state inventate dai "commercianti" per 
spingere un prodotto piuttosto che un altro. Non certo per valutare le 
qualità entrinseche degli stessi.
Sei capace, capacissimo, di affrontare conversazioni di livello un tantino 
superiore. E soprattutto, di rimanere in tema.
Scusami la schiettezza, e se ti sono sembrato eccessivamente diretto.
Ciao, Gianni:-) 

 porta a dimnuire il numero di errori che si potrebbero commettere.
Chiarissimo.
Ciao, Gianni. 

 ho detto fino ad ora?
Stai facendo una grossa confusione tra la gestione della memoria fatta dal 
sistema operativo (Windows CE) e la gestione della memoria fatta dal Compact 
Framework e, in particolare, dal processo di garbage collection (ovvero la 
distruzione di istanze di oggetti che non hanno piů un riferimento per 
essere manipolati e non distrutti esplicitamente dall'applicativo che li ha 
creati) operato dalla "macchina virtuale" di Dot.NET.
In ogni caso la gestione della memoria di Compact Framework č comunque 
sottoposta alla gestione della memoria da parte del sistema operativo, in 
quanto la macchina virtuale č un processo che deve obbligatoriamente 
rispondere al s.o. come ogni altro programma nativo della piattaforma.
Peraltro le migliore di Compact Framework SP2 sarebbero visibili solo usando 
applicativi compilati per Dot.NET e non con applicazioni native; le tue 
prove le hai fatte con programmi nativi o con applicativi .NET ?
-- 
Saluti. 

 Scusami la schiettezza, e se ti sono sembrato eccessivamente diretto.
Idem da parte mia, è solo pensiero espresso e rigorosamente imho.
Ciao,
Gianmarco

tecnico non mi interessa particolarmente. 
Ok ma, senza offesa, stai facendo un po' di confusione.
-- 
Fondamentalmente

 Vero, infatti questa conversazione *è* di livello superiore.
E allora la lascio tutta a te (o a chi voglia seguirti), io non ne sono 
all'altezza:-)
Ciao, Gianni. 

 tue prove le hai fatte con programmi nativi o con applicativi .NET ?
Hai provato Virtual Pool? ;)
Ciao, Gianni.
P.s. Bentornato:-) 

 all'altezza:-)
Ma se su questo piano "non sei all'altezza", e sul piano tecnico cito dal
medesimo thread: "Desidero perň fare una precisazione: scendere in un campo
cosě profondamente
tecnico non mi interessa particolarmente", posso permettermi di chiederti un
pň provocatoriamente di che cos'č che si parla? ;)

 Ok ma, senza offesa, stai facendo un po' di confusione.
Guarda, il punto č questo: se mi spieghi, come ho cercato di fare io, con 
cura il tuo punto di vista, io sono ben lieto. Ma se lanci strali su questo 
e quello, senza spiegare e soprattutto documentare, mi sembra che il tutto 
diventi poco interessante.
Circa il Garbage collector ti sono state fornite piů spiegazioni.
Ciao, Gianni. 

 pò provocatoriamente di che cos'è che si parla? ;)
Prima o poi doveva venirti fuori quella parola: "provocatoriamente";)
Lascia stare: io ho posto un argomento, tu il tuo. Io seguirò quello che mi 
interessa, tu quello che interessa te.
Semplice, no?;)
Ciao, Gianni.
P.s. Bello il Natale che si avvicina, eh? 

 P.s. Bentornato:-)
Grazie.
-- 
Saluti. 

 Grazie.
Figurati:-)
Ciao, Gianni. 

 P.s. Bello il Natale che si avvicina, eh?
Vero, tra un mesetto è Natale e questo è un dato di fatto; l'altro dato di
fatto è che quando fai queste allusioni spicciole mi rammento di quanto
basiamo le nostre reciproche opinioni ed affermazioni su piani esistenziali
ed intellettivi molto distanti.

Circa il Garbage collector ti sono state fornite piů spiegazioni.
Appunto, leggi Paquito.
-- 
Fondamentalmente

 ed intellettivi molto distanti.
Su questo mi trovi *assolutamente* d'accordo:-)
Ciao, Gianni. 

 Appunto, leggi Paquito.
Lo leggo, lo leggo. E con lui, grazie a lui, ora stiamo parlando di qualcosa 
di concreto;)
Il P.s. in calce al post iniziale era "esattamente" un invito ai "tecnici" 
di valutare la questione (ma non per tecnicismi, bensì con finalità 
"divulgative"). Finalmente qualche tecnico è venuto fuori.
Ciao, Gianni. 

"divulgative"). Finalmente qualche tecnico è venuto fuori.
Ah, quindi era tutta una tattica.
Spero che adesso tu sappia cosa e' il "Garbage".
-- 
Fondamentalmente

 
Non è detto che Virtual Pool sia stato fatto in .NET, anche se non l' ho 
provato il programma, sono sufficentemente sicuro che un problema simile 
a questo sia invece riconducibile a una allocazione di memoria fatta in 
C o C++ e una sua conseguente "dimenticanza" di deallocazione. La stessa 
cosa potrebbe capitare su qualunque altro sistema sia ppc che desktop o 
server.


 Spero che adesso tu sappia cosa e' il "Garbage".
LoL... io lo sņ gią da qualche tempo, nutro dubbi invece dubbi sul tuo conto 
e sulla tua disponibilitą a fornire reali contributi.
Ad ogni modo grazie:-)
Ciao, Gianni. 

 potrebbe capitare su qualunque altro sistema sia ppc che desktop o server.
Saresti cosě gentile da spiegarmi (ci) cosa intende il capoccione Microsoft 
quando dice che il Garbage collector crea nuovi spazi di memoria a favore 
dell'applicativo quando questi crea "new objects"?
Thanks.
Gianni. 

 del garbage collector?
Se fosse scritto in DotNET potrebbe anche essere; sarebbe anzi un caso 
tipico di non corretta gestione della memoria: ovvero l'applicativo DotNET 
alloca memoria nello spazio riservato alla macchina virtuale e poi non la 
rilascia esplicitamente (o per dimenticanza o perchè si conta proprio sul 
garbage collector della macchina virtuale).
Tieni conto che l'intervento del garbage collector non è immediato, per cui 
un'istanza d'oggetto presente in memoria e non più referenziata non viene 
eliminata "in tempo reale" ma secondo un algoritmo che tende a minimizzare 
l'impatto del garbage collector nelle prestazioni del sistema.
-- 
Saluti. 

 un'istanza d'oggetto presente in memoria e non più referenziata non viene 
Il "garbage collector" su .NET CF non è sicuramente reale ma da una 
priorità al rilascio della memoria in modo molto più elevato rispetto al 
a quello di .NET quindi è strano che lasci li 2 mb appesi, per quello 
che propendo come a pensarla come te che il gioco non sia stato fatto in 
.NET.


 a favore dell'applicativo quando questi crea "new objects"?
Niente di che, č il normale funzionamento del garbage collector: liberare 
memoria all'interno della quota riservata alla macchina virtuale, eliminando 
le istanze non piů necessarie e creando quindi spazio (o piů spazio) per 
nuove istanze di oggetti.
E' una reingegnerizzazione dell'algoritmo che governa il processo di garbage 
collection al fine di ottimizzare ulteriormente la gestione della memoria.
-- 
Saluti. 

Ad ogni modo grazie:-)
prego.
-- 
Fondamentalmente

 memoria.
A parte che se fossi un po' piů "divulgativo", diciamo piů chiaro per i 
profani, sarebbe meglio, ma ti dico che non č cosě (imho).
Ti riporto uno stralcio, forse non mi ero spiegato bene in precedenza e 
parliamo di cose diverse:
"When the application creates the next object, the garbage collector 
allocates
memory for it in the address space immediately following the first object.
As long as address space is available, the garbage collector continues to
allocate space for new objects in this manner."
A parte la traduzione dal giapponese all'italiano (č giapponese, no?), cosa 
intende dire il capoccione? Cosa succede, in termini elementari, quando il 
Garbage "alloca memoria per il nuovo oggetto nello spazio immediatamente 
successivo al primo oggetto"?
Ciao, Gianni. 

 dell'applicativo quando questi crea "new objects"?
Quando fai un "new" di un oggetto il garbage collector, alloca una 
spazio di memoria per quell' oggetto , e fin qui nulla di stano, quello 
che fa in più è ricordarsi chi ha creato quell'oggetto, dove è stato 
creato e quando non è più referenziato dall'applicazione toglierlo dalla 
memoria automaticamente. Quindi .NET CF tiene traccia di tutte le 
allocazioni che faccio e in determinati momenti le controlla, verifica 
se non sono più referenziate e se non lo sono le libera.


 produzione di garbage.
Datti una rasserenata, sient'ammè, e segui il filone con Paquito e 
Massimiliano, che abbiamo entrambi da imparare.
Ciao, Gianni:-) 

 
Crea una lista, dove ogni allocazione di memoria punta alla sucessiva in 
modo che io la possa scorrere.
In parole povere
max=new Max()
Mette in memoria "max" poi
gti=new Gti()
metto in memoria "gti" e dico a "max" dove si trova in memoria "gti"
Quando dovrà scorrere la memoria allocato parto da max e lui conosce il 
sucessivo che è gti, poi gti conoscerà il sucessivo e via dicendo.


Massimiliano, che abbiamo entrambi da imparare.
Come gia' detto, non programmo in .Net e quindi non mi interesso del
tecniche usate dal Framework ma so che se in qualche parte dei miei
programmi ( ad esempio in Pascal, tanto stiamo sul
didattico/divulgativo) scrivo:
New(F)
F:= Q
faccio quella cosa che conosci bene.
-- 
Fondamentalmente

 immediatamente successivo al primo oggetto"?
Come ti ho detto è un adattamento dell'agoritmo di garbage collection di 
DotNET alle esigenze di memoria dei palmari, come anche dice Massimiliano 
G..
Nel passo quotato vuol dire che l'allocazione di spazio avviene, per quanto 
possibile, in indirizzi di memoria contigui in modo da massimizzare le 
prestazioni e minimizzare la frammentazione della memoria stessa (sempre 
scarsa in un palmare).
-- 
Saluti.

F:= Q
Sorry:
New(F) ;
F:= Q ;
senno' poi sembra che non conosco nemmeno il Pascal.
-- 
Fondamentalmente

 
E non si una più liberare memoria alla fine ?


E non si una più liberare memoria alla fine ?
In tal caso provocatoriamente no. :-)
-- 
Fondamentalmente

 sucessivo che è gti, poi gti conoscerà il sucessivo e via dicendo.
Chiarissimo:-)
Ora: per new=Gti, e per il successivo new=Paquito, viene allocata memoria 
(ram, in via esclusiva, no?), che successivamente verrà rilasciata quando il 
Garbage si accorgerà che non è più necessaria. E' così?
Ti faccio un esempio (lasciamo da parte se l'applicativo preso in esame sia 
coinvolto o meno, sennò non ci si capisce più niente): apro i contatti, creo 
un nuovo contatto (senza salvarlo). A questo punto il Garbage fornise le 
istruzioni di cui sopra (è così?) e alloca un piccolo spazio di memoria per 
il nuovo contatto (no?).
In altre parole vorrei capire se quei mb in più che alcune applicazioni 
occupano sul SE sono frutto di questo processo.
Ciao, Gianni. 

 faccio quella cosa che conosci bene.
Chissà perché, ma ho l'impressione che a conoscere bene quella cosa, sia 
proprio tu:-)
D'altra parte stiamo parlando di programmazione, no?
Ciao, Gianni;) 

il nuovo contatto (no?).
ehm ehm
-- 
Fondamentalmente

 occupano sul SE sono frutto di questo processo.
Si ma questo,ecluso il rilascio funzika cosi in tutte le applicazioni al 
mondo non sono per .NET CF, qualunque cosa tu faccia allochi memoria 
quello che cambia è il "dove" e il "quando" sarà rilasciata.


 ehm ehm
Lucido, chiaro, fermo e determinato. A parte il fatto che dovresti metterti 
d'accordo coi tuoi colleghi programmatori, visto che la pensano (entrambi) 
in modo opposto a te, ritengo che a questo punto dovrai pur renderti conto 
che la tua presenza qui è finalizzata unicamente a fare polemica.
Contento tu, io non ho che da prenderne atto.
Ciao, Gianni. 

quello che cambia è il "dove" e il "quando" sarà rilasciata.
Purtroppo aggiungo anche "se" sara' rilasciata.
-- 
Fondamentalmente

 
Intanto tu non la rilasci ;)


 quello che cambia è il "dove" e il "quando" sarà rilasciata.
Ok. Riassumendo, mi sembra di aver capito che "anche" nel Wm2003 per ogni 
applicazione e per ogni suo "new object" viene allocata memoria "esclusiva". 
Il garbage in Wm2003SE si occupa di fornire nuova memoria allocata ad ogni 
nuovo oggetto, il più possibile vicino al vecchio, e di fornire al vecchio 
le informazioni per trovare il nuovo (e poi si occupa di liberare la 
memoria, successivamente).
Quello che mi resta da capire, e che Paquito sostiene non essere, è se tutte 
le applicazioni in Wm2003 SE vengono gestite (nel processo di allocazione 
della memoria) dal garbage collector.
Da quello che ho letto mi pare di sì, ma vorrei sapere cosa ne dici tu (e 
soprattutto perché).
Grazie comunque per l'utilissimo contributo.
Ciao, Gianni. 

che la tua presenza qui è finalizzata unicamente a fare polemica.
Si', sono un po' polemico ma ammetterai che e' una polemica
costruttiva.
-- 
Fondamentalmente

Intanto tu non la rilasci ;)
Io provocatoriamente, qualcuno purtroppo inconsapevolmente. :-))
-- 
Fondamentalmente

 le applicazioni in Wm2003 SE vengono gestite (nel processo di allocazione 
Paquito sostiene il "giusto" :) solo le applicazioni scritte in .NET 
vegnono gestite cosi per le altre tutta la gestione è a carico del 
programmatore.


 costruttiva.
Mi sembra che finora tu non abbia costruito un chiodo, ma posso sbagliare.
Ciao, Gianni.
P.s. Se vuoi, ma non qui, puoi chiedermi di spiegarti la differenza circa il 
termine essenziale. 

 programmatore.
Posso dedurre che "i vuoti di memoria" del Wm2003 siano imputabili solo ad 
alcune applicazioni?
Tra quelle "di sistema", come a "mero titolo di esempio", il Bt Manager 
della Widcomm come è in .NET?
Ciao, Gianni. 

 della Widcomm come è in .NET?
Non esiste un metodo "esatto" per sapere con cosa è stato sviluppato, 
bisogna guardare il binario o usare un decompilatore se il codice non è 
stato offuscato per non renderlo decombilabile, in questo momento cmq 
non te lo so dire.


termine essenziale. 
So gia' a chi rivolgermi ma ti ringrazio della disponibilita'.
-- 
Fondamentalmente

della Widcomm come è in .NET?
Non mi risulta.
-- 
Fondamentalmente

 So gia' a chi rivolgermi ma ti ringrazio della disponibilita'.
Non c'è di che. Ma lasciami sperare altrettanto da parte dal mio 
"appassionato" interlocutore. Ti tornerà in conto la mia tendenza a non 
vagliare la competenza altrui, se non per ragioni strettamente inerenti le 
mie utilità personali. Se ci fai caso ti accorgerai che chi tende a valutare 
l'altrui competenza, guardandosi bene dall'argomentare l'oggetto del 
confronto, generalmente ha tutt'altro in mente che non sia il dialogo e la 
curiosità intellettuale.
Chiudo qua: le persone "competenti" hanno offerto il contributo che speravo.
Ciao, Gianni. 

Chiudo qua: le persone "competenti" hanno offerto il contributo che speravo.
Perfetto.
Avviso ai naviganti: sono un incompetente, tenetene conto quando
leggerete un mio intervento.
-- 
Fondamentalmente incompetente

 leggerete un mio intervento.
LoL... ma non ti accorgi di aver aperto, e chiuso in grande stile, un filone 
di thread che con l'argomento principe non centra un "chiodo" (sarà poco 
banale, ma è il più piccolo elemento che mi viene in mente in un 
"congegno")?
Come vedi la mia risposta a te non è mai polemica, e tantomeno era polemica 
quella di prima. Ti ho semplicemente detto che chi ne capisce qualcosa mi ha 
illuminato (aggratisse:-), e mi ha dato risposte che cercavo.
Ora probabilmente tu ne capisci molto più di loro, o forse meno, ma questo a 
me interessa come un fico secco che brucia al sole.
***Quello che a me interessa*** è che ***loro*** mi hanno spiegato, con 
pazienza e disponibilità, ciò che io ***desideravo sapere***.
Tu ancora mi fai perdere tempo con queste sciocchezze.
Bada bene: ognuno è libero di scrivere, dire, sostenere quello che vuole. Se 
tu vuoi continuare su questo profilo saranno pure affari tuoi. Io sto 
cercando semplicemente di dirti che ***non mi interessa un confronto 
polemico con te***, e a dimostrazione di ciò rinuncio a rispondere rigo per 
rigo con tono altrettanto polemico, cosa che probabilmente saprei fare 
almeno quanto te.
Non è difficile:-)
Ciao, Gianni. 

Ciao, Gianni. 
Guarda, te lo dico sinceramente, ti ho sempre trovato e continuo a
trovarti simpatico (non sto scherzando).
Tu non mi conosci, o forse si' boh, ma ti assicuro che sono uno molto
disponibile, umile e paziente ( fermo restando che non uso il .net CF,
come specificato subito), ma se quando faccio delle osservazioni
_fondate_ ( primi due post) mi si risponde che lancio strali allora
perdo molta della mia proverbiale disponibilita'.
Tu, del resto, hai un approccio alle questioni tutt'altro che umile e
questo non sempre predispone l'interlocutore ad un dialogo amichevole.
Questi sono i risultati,  ciascuno di noi due tragga le dovute
conclusioni.
PS ... bello, e' il primo litigio in tanti anni qua dentro.
-- 
Fondamentalmente

 PS ... bello, e' il primo litigio in tanti anni qua dentro.
Beh... se questo lo chiami litigio, allora non è poi vero che sei qui da 
molti anni... ;)
Torno a lavorare, ciao.
Gianni.
P.s. Appena ho tempo riprendo il discorso relativo al "find", momento a 
partire dal quale forse sono sorti dei malintesi;) 

PS ... bello, e' il primo litigio in tanti anni qua dentro.
e se continui cosi non sara' l'ultimo...
;-)
Saluti.
  Paolo

 ;-)
La tua comparsa in questo thread dimostra scientificamente che i troll sono
organizzati e coordinati, ed escono fuori a comando (mio? di chi? quale
interesse li muove? forse commerciale?:)))

;-)
Sto facendo la tessera... forse me l'accettano! :-))
-- 
Fondamentalmente

molti anni... ;)
Per me, che amo il quieto vivere, e' un litigio.
-- 
Fondamentalmente

interesse li muove? forse commerciale?:)))
ROTFL
chi vivra' vedra'...
Saluti.
  Paolo

 della Widcomm come č in .NET?
Leggo solo adesso questo interessante tread. Lavoro in .net da qualche anno 
e confermo quanto detto fin qui da Paquito e Massimiliano.
In teoria la bellezza del garbage collector č che questa:
anche se sei stato un programmatore distratto, hai creato in memoria molti 
oggetti e non ne hai deallocato nemmeno uno, alla chiusura dell'applicazione 
il garbage collector conosce tutto quello che hai aperto fino ad adesso e lo 
distrugge (anche se non immediatamente). Il tutto solo se l'applicazione č 
scritta con .net
Invece con altri linguaggi se allochi memoria devi anche preoccuparti di 
deallocarla. Altrimenti rimane tutto lě.
Inoltre se questi problemi di memoria fossero dovuti al garbage collector 
per quale ragione il tuo bellissimo nuovo pocket pc dovrebbe esserne immune?
Ciao. 

 immune?
Non c'è ragione alcuna perché il mio stupendo palmare nuovo debba esserne 
immune:-)
Hai per caso avuto in mano un palmare con Wm2003SE? Sarebbe utilissimo, 
perché ptresti rispondere a molti quesiti e contribuire a far luce sul 
problema.
Ciao, Gianni.
P.s. Risolto il problema del "find" su ppc (spero ti ricordi della 
questione, io me n'ero fatto un cruccio ma il mio nuovo gioiello m'ha 
distratto). Non dipende dalla macchina, ma dall'utilizzo di Outlook. Chi non 
usa Outlook, ma altri Pim per Pc (limito il tutto al mio Lotus Orgainzer), 
deve per forza di cose usare un sincronizzatore terzo (nel mio caso 
XtendedConnectPc). Purtroppo in questo caso, evidentemente per una diversa 
gestione del database, la funzione "find" non è capace di accedere ai campi 
interni del Pim sul Ppc, ma solo alla descrizione.
Ecco perché da quando uso Ppc sono costretto ad usare "find" di terzi 
programmi (il find di AgendaFusion funziona all'uopo).
Il malinteso è nato da fatto che ho più volte confrontato il mio problema 
con altri, ma tutti gli altri usavano Lotus Organizer (o altri Pim per pc).

 immune?
P.s. Per precisare: il Loox 720 non sembra affatto immune dal problema della 
memoria fantasma (anzi, è l'unico nel quale esiste e del quale posso 
riportare esperienza diretta). Il fatto che il Loox non "soffra" a causa di 
questo problema dipende dalla quantità di memoria: 128, con tro i 64Mb di 
molti altri.
Ciao, Gianni. 

 Ciao, Gianni.
No, ho solo il mio 4150 di cui sono molto soddisfatto.
Comunque a mio parere i programmi scritti con .net sono pochi. In teoria 
dovrebbero dire nei requisiti di sistema che è necessario il framework o che 
funzionano solo con wm2003se (dove mi pare di aver capito che sia incluso).
Ciao. 

 di molti altri.
Avevo capito male.
Quel programma di biliardo di cui parlavi, funzionava anche col vecchio 
sistema operativo senza dare questo problema di memoria?
Ciao. 

 incluso).
Appena ho tempo installo il .Net sul 3970... vediamo se il problema della 
memoria si presenta anche lě.
Ciao, Gianni. 

 sistema operativo senza dare questo problema di memoria?
Non sul 3970, ma non ho avuto tempo di capire se si trattava di un problema 
della Sd. E' questo che mi ha fatto pensare al .Net.
Ciao, Gianni. 

 attuali so per palmari sono "giovani").
Allora chi usa PalmOS puo' essere considerato conme l'utente DOS
dell'epoca?
Fabrizio (beh, mi ricordo che si andava decisamente bene anche con un
386...)