> Esto esta bueno. Te hago una pregunta: ¿tendrías que reocrrer primero > las clases del perm, no?
En realidad no. Como dije en la charla de Smalltalks 2010, de perm a old esta el old remembered table, asi que solo tenes que recorrer el oldRT y marcar todo lo que no este en perm (y meterlo en la cola del mark para escanear). Por eso, una vez visto el oldRT, antes de dereferenciar un puntero te fijas si esta en perm. Si es asi, ni lo miras y seguis viaje. Del mismo modo, de perm y old a new esta el rt comun (esto sirve para el scavenge de new space). > Justamente como estos objetos nunca son > basura, las referencias por estos contenidos tampoco -je, volvimos a > la clausura transitiva-. Exactamente. Y por ejemplo, si tenes un ephemeron y el key esta en perm, ya sabes que ese ephemeron no se puede finalizar en este GC (porque si el key esta en perm entonces asumis que no es basura == asumis que esta marcado). > Es interesante, por que entre esto, y el > rememberedSet se trata de llevar el scavenger a que trabaje con > subgraphs. (un poco, de cierta manera, y visto con cariño). Si... > No pude > pensar mucho sobre eso, pero creo que trabajar sobre subgraph > disjuntos puede ser interesante para multithreading scavenging Puede ser, pero no me queda claro como se puede hacer para irse acordando que grafos relativamente grandes estan disjuntos. Si la memoria de objetos estuviera particionada, entonces por definicion los grafos estarian separados y entonces si podrias tener multithreaded GC, y multithreaded codigo nativo, etc. Un tema dificil, aparte de la "trivialidad" de hacer un JIT multithreaded, es como hacer que la imagen entienda todo ese quilombo. Por ejemplo, se asume todo el tiempo que un proceso de prioridad X > Y siempre interrumpe a un proceso de prioridad Y. Pero, en una VM multithreaded, que pasa si el proceso de prioridad Y se va a una primitiva que tarda mil años (pero que progresa y usa memoria etc por ejemplo LargeInteger>>*), y entonces salta el proceso X. Que se hace con la primitiva del proceso de prioridad Y? Y si no se puede deshacer el progreso ya realizado por la primitiva? Es un bardo. Andres. -- To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] http://www.clubSmalltalk.org
