> ale bude tam i objekt pro graf, ze kterého bude přístup na všechny uzly a hrany toho grafu.
No právě že tam být nemusí pokud není vyžadován přímo algoritmem. O tom celou dobu mluvím. Tohle jsou právě ty případy, kdy je řešení úlohy ovlivněno potřebou po sobě uklidit, protože nemá trasovací GC a tyto praktiky pak programátoři tahají i tam, kde to není třeba (a ani si toho nevšimnou, že dělají něco zbytečné až škodlivé).
Zdroje jako soubory a sockety lze většinou snadno uvolnit deterministicky. V jazycích jako C++ je to spojeno s uvolňováním paměti, protože se tam uklízí deterministicky vše, ale to neznamená, že by to existence GC nějak zesložiťovala. Ještě jsem nenarazil na situaci, kdy bych se nedeterministickému úklidu musel nějak přizpůsobovat. Snad před 20 lety, když bylo paměti málo a bylo to pomalé.
Ještě si dovolím poznámku - mluvíme o úklidu paměti u trasovacích GC, ale to je poněkud zavádějící pohled. Pro pochopení celého paradigmatu je dobré nahlédnout, že to ve skutečnosti předstírá prostředí, kde je k dispozici nekonečné množství paměti (jak je toho dosaženo lze brát jako implementační detail). V takovém prostředí se nutně zjednoduší celý návrh dat a algoritmů, protože s nekonečným množstvím paměti odpadá spousta starostí :-) Dnešním GC takový přístup navíc mnohem lépe "chutná". Pokud se narazí na problémy s výkonem, tak to lze řešit jako jakoukoli jinou optimalizaci (čili ne slepě a předčasně).