Memoria insufficiente è disponibile per completare questa operazione - Memoria di programma o di stoccaggio?

StackOverflow https://stackoverflow.com/questions/2881419

Domanda

mi è stata data un'applicazione Windows Mobile scritta in .Net CF 3.5 di correzione, e uno dei problemi è a che fare con la conservazione.

Il messaggio 'Memoria insufficiente è disponibile per completare l'operazione' è apparso un paio di volte - è registrato nel database SQL CE, e sempre accade durante l'accesso ai dati (ma non lo stesso po 'di accesso ai dati)

La cosa che sto un po 'confuso circa è se questo si riferisce alla memoria di programma (ad esempio RAM) o di stoccaggio memoria (stoccaggio e..g permanente). Sembrerebbe essere memoria di archiviazione, ma i dispositivi sembrano avere gratuitamente un sacco. Mentre ci sono alcuni OutOfMemoryExceptions, questi sembrano totalmente estranei a questo problema (in quel che capita in un momento diverso a causa di un problema di immagine-correlato).

Stiamo utilizzando SQL CE 3.5 con una singola connessione, che viene memorizzato insieme con l'applicazione sul dispositivo (in contrasto con la scheda di memoria). Il dispositivo è un Motorola MC75 con sistema operativo Windows Mobile 6.1.

Qualche idea?

È stato utile?

Soluzione

Si tratta di un basso livello di errore di Windows, il codice 14, ERROR_OUTOFMEMORY. Il messaggio di errore non menziona "memoria", perché non è sempre causato da corto di memoria. Il trigger più tipico è un programma di superamento della quota delle risorse del kernel. Come 10.000 maniglie per finestra, ci sono molti altri. Questo è per la versione desktop btw, io non lo metto in dubbio è molto più basso su Windows Mobile.

Bene, il programma è un salvadanaio. Un modo possibile per far scattare questo errore è quello di non chiamare Dispose () su oggetti di classi che implementano IDisposable. Che consumare le risorse del kernel che non sarà rilasciato fino a quando il garbage collector ed eseguire thread finalizzatori. Che potrebbe richiedere un po '. Le classi di SQL CE sono certamente un candidato. Se non avete idea di dove la perdita di risorse o over-utilizzo è venuta da allora investire in un profiler che funziona su CF.

Altri suggerimenti

Quanta memoria virtuale viene allocata? Provare ad aumentare il valore, se possibile.

Non so se questo vale anche per la MC75, ma su Start->Settings->Control Panel->System ci dovrebbe essere una scheda di memoria, in cui è possibile regolare la quantità di memoria è disponibile come RAM, e quanto è riservato per la memorizzazione di file.

Questo non si applica alla cartella \ permanente bagagli (o \ Scheda di memoria, come viene chiamato sul nostro dispositivo), ma per le altre cartelle, come \ Temp.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top