Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    145

    [Delphi 7] Interbase : errore nella Post

    Ciao a tutti! Ho un problema con Interbase...
    La mia applicazione è un servizio Windows e scrive molto spesso su una tabella Interbase.
    Dopo 3-4 giorni che il processo continua, al momento di effettuare la Post sulla tabella x confermare l'inserimento di un nuovo record, mi dà un errore con la seguente eccezzione :
    'Out of memory'

    e da quel momento in poi ogni scrittura successiva fallisce!

    cosa significa? Non è un problema di quantità di RAM (1GB basta e avanza)...

    Aiuto!!!
    grazie mille!!!


  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Difficile diagnosticare il problema. Se ti viene restituito un errore Out of memory, significa che la tua applicazione ha dei "memory leak", cioè delle allocazioni di memoria (creazione di oggetti, disposizione di risorse) che non vengono deallocate al termine del loro utilizzo, magari riallocandole nuovamente nelle chiamate successive.

    Il fatto di incrementare la RAM, sposta solo in avanti il punto critico in cui il programma andrà in blocco.

    E' come avere un soffitto che perde acqua: aumentare le dimensioni del secchio che metti sotto a raccogliere le gocce significa solo posticipare il momento nel quale il secchio traboccherà, ma il vero problema è uno solo: chiudere la falla.

    Senza uno stralcio di codice, è impossibile determinare quale possa essere l'origine del memory leak.

    Magari hai semplicemente creato dei componenti dinamicamente di cui non esegui la Free e questa operazione viene iterata più volte saturando la memoria.

    Prova a controllare il codice sorgente alla ricerca di eventualità di questo tipo...

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    145
    Dici quindi che non è dovuto al metodo Post o a qualcosa col db? E' un errore di programmazione?

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Se il problema si verifica dopo 3-4 giorni di Post continuate, l'operazione stessa di Post e il DB non hanno apparentemente un problema (altrimenti si verificherebbe subito).

    Il tipo di errore mi fa sospettare che vi sia da qualche parte un'allocazione continua di risorse che non vengano deallocate portando il programma a bloccarsi dopo qualche giorno; qualsiasi altro errore di tipo "sistematico" tendo ad escluderlo, altrimenti si verificherebbe subito o comunque entro breve tempo.

    Ho un'applicazione che lavora con la posta elettronica e smista messaggi con allegati di dimensioni notevoli, lavora 5 giorni su 7, anche alla notte, ma non ho mai avuto problemi su Post o database di questo tipo (a riposo o a giochi fermi, la memoria occupata è sempre di 4~5 MB).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2001
    Messaggi
    145
    Ok grazie, ora riguardo il tutto!
    Sai se esiste un modo in delhpi di fare una "pulitura" della memoria usata da un processo (ad esempio eliminare gli oggetti non referenziati da tanto tempo, ecc ecc)?

    grazie mille!!!

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Originariamente inviato da alanf1981
    Sai se esiste un modo in delhpi di fare una "pulitura" della memoria usata da un processo (ad esempio eliminare gli oggetti non referenziati da tanto tempo, ecc ecc)?
    Purtroppo no. Delphi produce applicazioni Win32, il quale non è un ambiente di esecuzione "gestito" come ad esempio lo è il .NET Framework di Microsoft, pertanto è il programmatore a doversi occupare della distruzione esplicita degli oggetti creati e della memoria allocata.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.