Newsgroup: it.comp.lang.visual-basic
Titolo: memoria esaurita

salve, vorrei sapere come rimediare all'errore di run time "memoria
esaurita" che mi appare quando apro un form contenente circa 50 record di un
database access (visual basic 6).ho 512 mb di ram e un pentium 4 da 2.8 ghz
HT.
lavoro su win xp home, con tecbologia quindi NT.
grazie a coloro che mi daranno una mano. 

 lavoro su win xp home, con tecbologia quindi NT.
Non so se la versione Home prevede il Task Manager Windows,
ctrl+alt+cancel;
se si puoi verificare quali applicazioni occupano troppa memoria.
Se il problema è vb6, in considerazione che può girare tranquillamente con 
64 mb con Windows 98,
verifica se qualche loop ruota all'infinito.
Inserito il codice di gestione degli errori almeno nei metodi principali ?
Ave
giuseppeD
---
CCR


Il problema non dipemde dall'hardware, né da VB. Verifica che non ci sia una
chiamata ricorsiva nel codice: Questo tipo di chiamate genera questo errore.
Esempio:
Private Sub btnProva_Click()
    Call MiaRoutine
End Sub
Private Sub MiaRoutine()
    Call btnProva_Click
End Sub
Quando clicchi sul pulsante btnProva, viene chiamata la routine MiaRoutine,
la quale richiama il pulsante, il quale richiama la routine, .... e così via
finché la ram non viene occupata tutta. Il computer appare bloccato per
qualche istante finché appare il messaggio di errore "Memoria esaurita".
Verifica se nel tuo codice non succede qualcosa di questo genere, magari
impostando un punto di interruzione e procedendo passo passo con Ctrl+F8 per
individuare l'istruzione dove si arena.
Spero ti sia stato utile. Ciao
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 salve, vorrei sapere come rimediare...
caro luca,
vorrei sapere perchè, invece di proseguire sul thread che avevi già aperto
per questo problema, ne apri un'altro...
nel precedente thread ti erano state poste delle domande, fornito dei
suggerimenti. che ne hai fatto?
in particolare, e personalmente, ti avevo chiesto che controlli c'erano
sulla form utilizzata per la visualizzazione dei dati... 
-- 
Salutoni
Sergio
Per rispondere... togli il group dall'indirizzo
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 ha scritto nel 
messaggio news:coesb2$qec$1...@news.newsland.it...


> controllo "non standard" bacato o malconfigurato
esatto.
ma questa mia affermazione può essere ritenuta corretta?
che controlli ci sono su quella form?
in fase di test dell'applicazione si è sempre "inchiodata" o ha cominciato a
farlo da un certo punto in poi?
insomma, com'è fatta la form incriminata?
-- 
Salutoni
Sergio
per rispondere... togli il group dall'indirizzo

Luca wrote:
[CUT]
http://www.freewebz.com/iosononiubbo/iosononiubbo.htm#quotare
--
GHGHGHGHGHGH
http://snipurl.com/au49

 insomma, com'č fatta la form incriminata?


 che sia perchč le textbox occupano troppa memoria?
50 text in un pc con 512 di ram ? sarebbe strano...
se non hai scritto codice che si inluppa, piu' probabile che occupino troppo
i rs cui i txtboxes sono collegati.
se usi datacombo o simili, prova a usare combo normali, caricandoli in
sequenza con un unico rs dichiarato, settato via via secondo il combo.
certo che se non posti il codice, ogni ipotesi e' un calendario di frate
indovino...
-- 
hth, ciao, j.
http://www.sundaysw.com

Luca wrote:
questo thread mi interessava indirettamente, ma non ho trovato 
spunti che potessero servirmi.
Quindi ho tentato di riflettere sul problema generico della 
mancanza di memoria, o memoria esaurita, che si presenta quando 
uno presumerebbe che non dovesse presentarsi (intendo che se 
tenti di caricare un BMP da 5000 * 5000 pixel a 24 bit di colore 
o di riallocare una matrice dinamica di 200 MB, si può presumere 
che così tanta memoria contigua possa essere trovata a fatica 
anche quando il S.O. lanci ogni possibile garbage collector e le 
routine di deframmentazione della memoria globale libera).
Purtroppo non so molto neppure di Win98 (XP manco a parlarne), 
ma ricordo che Win 3.11, STACK overflow a parte, gestiva tipi 
diversi di risorse in comparti stagni : del tipo, TOT handle 
destinati a files, TOT brush per colorare, TOT pen per 
disegnare, TOT hDC, tot memoria HEAP, TOT di memoria GDI (per 
Blt, flood fill e altro), TOT timer, TOT fonts, insomma, con 
contenitori riservati alle singole tipologie di utilizzo e non 
comunicanti.
Quindi, a quell'epoca, esisteva il rischio di andare OUT of 
Memory non appena anche soltanto uno di questi settori di 
risorse andasse OUT. La memoria non era gestita flessibilmente, 
complici i limiti della segmentazione a 16 bit e porcate varie.
Ora mi chiedo, è possibile che lo stesso genere di problemi 
possa ancora presentarsi ?
Ad es. so che con i timer globali e gli handle di file Win98 non 
è molto robusto. Forse anche la risorsa hWnd (ogni finestra di 
"rango") richiede di allocare risorse da un pool ristretto e 
limitato che non attinge alla memoria totale disponibile .... 
Qualcuno sa qualcosa di più preciso sull'architettura dei SO 
moderni e se questo possa ancora causare simili problemi ?
ciao e grazie dei contributi
CCCP++Mario
