annuncio

Comprimi
Ancora nessun annuncio.

[PROPOSTA]ai player per la lag

Comprimi
X
 
  • Filtro
  • Ora
  • Visualizza
Elimina tutto
nuovi messaggi

  • #46
    Teoricamente il GC dovrebbe liberare tutta la memoria e ricompattarla, in pratica questo non succede altrimenti dopo il "clearing resources" il lag cesserebbe, cosa che, come tutti sappiamo, non succede.

    L'unica risposta che ho trovato è il particolare comportamento del GC con oggetti che prevedano una finalizzazione, questi oggetti non vengono liberati ma accodati in una lista, un thread periodicamente provvede alla finalizzazione degli oggetti nella lista.
    Il lag potrebbe essere l'intervento di questo thread.

    Il problema principale con la finalizzazione è che se un oggetto da finalizzare è la radice di un albero di altri oggetti, magari un GROSSO albero con megabytes di roba appesa, tutto l'albero non viene toccato dal GC prima che l'oggetto radice sia finalizzato dal thread.

    Altra possibile fonte di problemi è il meccanismo delle "generazioni" di oggetti, il GC divide gli oggetti secondo il loro arco di vita in "generazioni" per ottimizzare l'operazione per il recupero della memoria. Una nota che ho trovato in MSDN suggerisce che oggetti con ciclo di vita "medio" possano occupare spazio per un lungo tempo in memoria senza che il GC li tocchi perchè sono finiti nella "generazione 2".

    Si suggerisce che gli oggetti abbiano un ciclo di vita o molto breve o molto lungo (magari tutto il tempo di up del server) e che comunque venga evitata la finalizzazione, specialmente per oggetti che sono radice per altri oggetti.

    Il GC sembra rendere le cose più semplici, e forse per progetti lameri è così, ma quando si va su sistemi complessi allora diventa più una palla al piede che altro. Java non è che sia meglio di .NET per la cronaca.

    Una richiesta, sarebbe possibile vedere il codice del "Clearing resources" ?
    Magari si dovrebbe inserire una risincronizzazione forzata con il thread finalizzatore, se già non c'è.
    Ultima modifica di Stormcrow; 25-07-2005, 15:13.
    Lemmings
    * Lani, Fabbro e Sarto
    * N'Salla Nuto, l'arciere che non ci prende mai [PP]
    * Lina, intrepida Paladina [PP]
    * Lila, la Domatrice di Vongole [PP]
    * Isah, La Piantagrane [AdL]
    * Trismegistus, Il Maestro di Veleni [AdL]

    Windows Vista, preferisco il colera.

    Commenta


    • #47
      Originally posted by Mastro Lani
      [cut]

      L'unica risposta che ho trovato è il particolare comportamento del GC con oggetti che prevedano una finalizzazione, questi oggetti non vengono liberati ma accodati in una lista, un thread periodicamente provvede alla finalizzazione degli oggetti nella lista.
      Il lag potrebbe essere l'intervento di questo thread.

      Il problema principale con la finalizzazione è che se un oggetto da finalizzare è la radice di un albero di altri oggetti, magari un GROSSO albero con megabytes di roba appesa, tutto l'albero non viene toccato dal GC prima che l'oggetto radice sia finalizzato dal thread.

      [cut]


      Magari si dovrebbe inserire una risincronizzazione forzata con il thread finalizzatore, se già non c'è.


      Giusto giustissimo e sottoscrivo in pieno, proprio il problema dell'oggetto-radice da finalizzare, direi che dovrebbe essere estremamente pertinente alla lag.

      Cmq anche inserire una risincronizzazione forzata a fine thread penso sia quantomeno "una toppa" ottimale, che ne dici?

      Piuttosto mandate questo magnifico post di Lani agli scripters, pls

      Commenta


      • #48
        scuste la mia ignoranza.. ma se è un thread perchè dovrebbe bloccarsi tutto il server nella finalizzazione di un "grosso" oggetto? Teoricamente il thread è fatto apposta per evitare ciò. Inoltre ricordiamo che la macchina ha 2 processori quindi non può essere un thread solo che blocca tutto.... corregetemi se sbaglio.
        www.gamesbravo.com giochi aggratis

        Commenta


        • #49
          Quando più thread devono accedere in maniera sincronizzata ad una risorsa condivisa, in questo caso l'heap, lo devono fare uno alla volta.
          Lemmings
          * Lani, Fabbro e Sarto
          * N'Salla Nuto, l'arciere che non ci prende mai [PP]
          * Lina, intrepida Paladina [PP]
          * Lila, la Domatrice di Vongole [PP]
          * Isah, La Piantagrane [AdL]
          * Trismegistus, Il Maestro di Veleni [AdL]

          Windows Vista, preferisco il colera.

          Commenta


          • #50
            Originally posted by Mastro Lani
            Quando più thread devono accedere in maniera sincronizzata ad una risorsa condivisa, in questo caso l'heap, lo devono fare uno alla volta.
            scusate l'ot...
            ti sfrutto un po' :P, ho un altro dubbio... quando un thread blocca un pezzo di memoria blocca tutto l'heap? non blocca solo quell'oggetto? bloccare degli oggetti che devono essere liberati non ha senso perche nessuno ci accede piu'...
            www.gamesbravo.com giochi aggratis

            Commenta


            • #51
              mi spiego un po' meglio... quello che intendo dire e che non avremo mai 2 thread che accedono a questi oggetti se essi sono da finalizzare e quindi non hanno più reference. Avremo solo il thread del gc che quindi non dovrebbe bloccare tutto il resto... a meno che, appunto, non blocchi un tocco di memoria grosso che comprende altre parti di programma
              www.gamesbravo.com giochi aggratis

              Commenta


              • #52
                Il GC non lavora oggetto per oggetto ma ricompatta tutto l'heap quindi credo che tutto l'heap sia la risorsa condivisa.

                Dipende anche dalla strategia adottata, mi pare di ricordare che in .NET ci sono 2 Garbage Collector disponibili: uno workstation e l'altro server. Mi pare che quello workstation sia "non bloccante" ed ottimizzato per risposte veloci, quello server è ottimizzato per il rendimento globale ma può avere momenti ti fermo totale.

                La domanda sorge spontanea, in UOD quale è usato ? a titolo di prova si potrebbe usare l'altro.
                Lemmings
                * Lani, Fabbro e Sarto
                * N'Salla Nuto, l'arciere che non ci prende mai [PP]
                * Lina, intrepida Paladina [PP]
                * Lila, la Domatrice di Vongole [PP]
                * Isah, La Piantagrane [AdL]
                * Trismegistus, Il Maestro di Veleni [AdL]

                Windows Vista, preferisco il colera.

                Commenta


                • #53
                  nel "performance monitor" di winzozz ci sono tutti i dati necessari per verificare se è davvero questo il problemo
                  www.gamesbravo.com giochi aggratis

                  Commenta

                  Sto operando...
                  X