• [^] # Re: Fausse idée sur les garbages collectors

    Posté par . En réponse au journal Encore une histoire de récupérateur de mémoire. Évalué à 2.

    On ne peut pas vraiment appeler ça un garbage collector mais dans les faits le programmeur utilise une API de haut niveau (en descendant parfois un peu sur certains points) et derrière le système se démmerde tout seul pour gérer les buffers et la mémoire vidéo.

    Sauf que:

    - La véritable gestion mémoire se fait à l'intérieur des buffers alloués par des appels OpenGL; et là c'est le développeur qui y organise ses données, et y accède par un système de pointeur (relatif au début du buffer). L'api "de haut niveau" n'est pratiquement utlisée que pour réserver de la mémoire.

    - OpenGL fournit des garanties sur quels appels peuvent déclencher une allocation, et quels appels ne le feront pas;

    - le système "automatique" que tu décris pour les buffers consiste essentiellement à incrémenter/décrémenter un compteur pour chaque buffer, sachant qu'ils ne peuvent pas avoir de références circulaires; on est très loin d'un GC moderne; (par contre les buffers peuvent en théorie être déplacés)

    - les extensions récentes (par exemple les uniform buffers d'openGL 3.1) cherchent souvent à donner un accès de plus en plus fin à la mémoire GPU;

    La seule possibilité que je vois pour pouvoir intégrer un GC dans un moteur de rendu (toujours dans le contexte du jeu vidéo), ce serait de pouvoir mettre une borne supérieure sur son temps d'exécution à chaque frame. Est-ce possible sur certains GC?