Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Istanza e memory leak

  1. #1

    Istanza e memory leak

    Ciao.

    Ho un'applicazione ASP in javascript che utilizza delle dll COM per la parte business e accesso ai dati... che differenza c'è tra istanziare queste dll con il new o con Server.CreateObject?
    L'istanza (non il new) può causare memory leak?

    Grazie.

  2. #2
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    C'è da precisare che puoi istanziare un oggetto Com in diversi modi.

    Con ActiveXObject, GetObject,CreateObject e Server.CreateObject (c'è una differenza tra queste ultime due funzioni)

    Detto questo, l'unica "perdita" che si può verificare è dovuta alla distrazione del programmatore che non gestisce la chiusura correttamente.

    Qui si deve operare una distinzione tra vbscript e javascript. In Vbscript si devono chudere gli oggetti per ottenere un codice funzionante e senza problemi. Javascript gestisce la chiusura come in java( non esiste un equivalente di nothing).

    In altre parole il garbage collector non era stato ancora pensato.

    La domanda che resta è quale dei metodi che consentono la creazione di un oggetto com è il migliore. Sicuramente il migliore in termini di prestazione è CreateObject, mentre il più sicuro è Server.CreateObject ( in merito ci sono diversi articoli anche sul sito microsoft)

    Ultmia questione: new. Questa parola riservata non istanzia oggetti Com, ma "classi" interne.

  3. #3
    Ok per quanto riguarda gli oggetti COM,grazie...
    ma per le classi che istanzio con new, devo occuparmi, in javascript, del rilascio come faccio per exempio in c++ (delete) ???

    Grazie.

  4. #4
    Utente di HTML.it L'avatar di Baol74
    Registrato dal
    Jul 2002
    Messaggi
    2,004
    no. Il rilascio è gestito dall'engine. Fai però attenzione alla dichiarazione delle variabili. Se usi una variabile in una funzione e non la dichiari con var quest'ultima verrà cosiderata globale, generando non pochi problemi in applicazioni complesse.

    codice:
    function Test(){
     s = "Prova" // variabile globale
     var s1="Prova" // questa è locale e verrà rilasciata a funzione ultimata.
    }
    
    Response.Write(s)
    Se invece usi Vbscript, lavora sempre con Option Explicit. E usa Set Object = Nothing per il rilascio

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 © 2025 vBulletin Solutions, Inc. All rights reserved.