2011-06-11 2 views
4

Quel est le mécanisme GC de Gambit-C? Je suis curieux à ce sujet pour faire une application interactive. Je veux savoir si cela peut éviter le fonctionnement du GC en rafale ou non.Quel est le mécanisme GC de Gambit-C?

+0

À la fin de la journée, il revient à l'expérience utilisateur - tant qu'il n'y a pas d'utilisateur * notable * pause ... –

+0

http: // dynamo .iro.umontreal.ca/~ gambit/wiki/index.php/Notes_on_Memory_Management semble indiquer que le ref-counting est utilisé, mais que ce sont des notes de 2007 (ce qui signifierait que la libération immédiate peut avoir lieu dans ces cas). –

+0

@pst Est-ce le résultat d'une application soft-realtime? Et s'il utilise le ref-counting immédiat, comment peut-il gérer correctement le référencement circulaire? – Eonil

Répondre

1

Selon http://dynamo.iro.umontreal.ca/~gambit/wiki/index.php/Debugging#Garbage_collection_threshold Gambit a quelques contrôles:

seuil Collecte des ordures ménagères

Faites attention aux options d'exécution h (HEAPSIZE maximale en kilo-octets) et l (livepercent). Voir le manuel de référence pour plus d'informations. Définir livepercent à cinq signifie que garbage collection aura lieu au moment où il y a dix-neuf fois plus de mémoire allouée pour les objets qui devraient être collectés, qu'il n'y a de mémoire allouée pour les objets qui ne devraient pas. La raison pour laquelle l'option livepercent est là est de donner un moyen de contrôler la façon dont le garbage collector doit être épargnant/généreux en ce qui concerne la consommation de mémoire, comparé au poids/léger qu'il devrait être dans la charge du processeur.

Vous pouvez toujours forcer la récupération de place par (## gc).

Si vous forcez la collecte des ordures après un petit nombre d'opérations, ou le programmer près de façon continue ou définir le livepercent à 90 comme on peut supposer que le gc fonctionnera souvent et ne pas faire très bien sur chaque course. Cela risque d'être plus coûteux dans l'ensemble, mais évitez les rafales de dépenses. Vous pouvez alors assez facilement budgétiser pour cette dépense pour rendre le service rapide malgré.

2

Selon ces fils:

Gambit a traditionnel arrêt du monde GC au moins jusqu'en Septembre 2008. Les gens en fil recommandé d'utiliser l'objet pré-alloué mise en commun pour éviter l'opération du GC elle-même. Je n'ai pas pu me renseigner sur la mise en œuvre actuelle.

* Il est difficile d'être d'accord avec la conversation. Parce que je ne peux pas mettre en commun un objet qui n'est pas écrit par moi-même et que le GC complet arrivera à un moment donné par des objets temporaires petits/non-groupés accumulés. Mais la méthode mentionnée par @Gregory peut aider à éviter ce problème. Cependant, je souhaite incrémental GC ajouté à Gambit :)

Questions connexes