मैं एक साधारण स्क्रिप्टिंग भाषा एपीआई में मार्क-एंड-स्वीप कचरा संग्रह लागू कर रहा हूं, जिस पर मैं काम कर रहा हूं और कचरा संग्रह के विभिन्न कार्यान्वयन के बारे में पढ़ रहा हूं। एपीआई जैसे लुआ सफेद, भूरे और काले सूचियों के साथ मार्क-एंड-स्वीप का उपयोग करते हैं।जीसी में सफेद/ग्रे/काला क्यों?
समस्या मैं क्यों ऐसी सूची रहे हैं और यही कारण है कि वे इन विशिष्ट रंगों में डाल रहे हैं की व्याख्या पढ़ सकते हैं नहीं कर पा रहे है।
मेरे वर्तमान, मामूली कार्यान्वयन में, मैं बस "मृत" या "जीवित" राज्यों का उपयोग करता हूं। स्वीप में, मृत वस्तुओं को हटा दिया जाता है। मैं देशी ढेर का उपयोग कर रहा हूं इसलिए मैं अपने जीसी में कोई भी कदम नहीं उठा रहा हूं। सब एक ग्रे ब्लॉक के वंशज काला के रूप में चिह्नित किया गया है अभी तक नहीं:
मैं इसे लिख रहा हूँ सी
में// Performs a full garbage collection
void GorCollect(GorContext *ctx)
{
Value *v, *end;
Collectable *c, *n;
// mark stack references
end = ctx->stack + ctx->stackTop + 1;
v = ctx->stack;
while(v != end)
{
if (gvisgc(v) && v->v.gc) // mark if a collectable obj
Mark(v->v.gc);
v = v++;
}
// mark global references
if (ctx->global)
Mark((Collectable *)ctx->global); // ctx->global is a collectable obj
// perform sweep
c = ctx->gchead; // full list of collectable objs
ctx->gchead = 0;
while(c) {
n = c->next;
// destroy unmarked collectable
if (!c->marked)
FreeCollectable(ctx, c);
// rebuild gc list (singly-linked)
else
{
c->marked = 0;
if (!ctx->gchead)
c->next = 0;
else
c->next = ctx->gchead;
ctx->gchead = c;
}
c = n;
}
}
'उन्हें इन विशिष्ट रंगों में क्यों रखा जाता है' - क्योंकि वे सुंदर हैं! – asaelr
"सफेद ग्रे ब्लैक को चिह्नित करें और साफ़ करें" के लिए खोज रहे हैं: http://www.memorymanagement.org/glossary/t.html#tri-color.marking। यही कारण है कि पेज उल्लेख एल्गोरिथ्म का एक महत्वपूर्ण संपत्ति यह "सही" है, तो मेरा अनुमान है अनुभवहीन दृष्टिकोण कुछ बढ़त मामले में जहां यह टूट जाता है है कि हो सकता है यह है कि के एक बिंदु बनाता है। – millimoose
इसके अलावा: http://en.wikipedia.org/wiki/Mark_and_sweep#Naive_mark-and-sweep अनुभवहीन दृष्टिकोण के मुख्य नुकसान है कि यह प्रक्रिया निलंबित बिना नहीं किया जा सकता के रूप में सूची। – millimoose