Czy Delphi ma Garbage Collection
?Odbiór śmieci w Delphi
Odpowiedz
Prosta odpowiedź nr
Delphi nie jest kompletnym językiem zbieranie śmieci, typy zdefiniowane przez użytkownika powinny być alokowane i zwalniane ręcznie. Zapewnia tylko automatyczne zbieranie, dla kilku wbudowanych typów, takich jak łańcuchy, dynamiczne tablice i interfejsy dla łatwości użycia.
Ale możesz używać interfejsów, które w pewnym stopniu wykorzystują liczenie odwołań do zbierania śmieci.
W zwykłym znaczeniu zbierania śmieci, gdzie środowisko wykonawcze wykrywa obiekty, do których nie odwołuje się, niszczy je lub w inny sposób odzyskuje niewykorzystane zasoby, nie, Delphi nie zbiera śmieci.
Jeśli używasz natywnego Win32 Delphi, to najbliżej musisz wyrzucać śmieci to różne typy zliczane referencyjnie, w tym ciągi, interfejsy, warianty i dynamiczne tablice. Te typy zostaną automatycznie wyczyszczone, gdy program określi, że nie są już używane, ale robi to poprzez utrzymywanie licznika referencyjnego, gdy te obiekty wchodzą i opuszczają bieżący zakres. Masz również koncepcję własności, która zniszczy posiadane komponenty, gdy właściciel zostanie zniszczony.
Jeśli używasz Delphi dla .Net, oznacza to, że nieumyślnie masz wyrzucone śmieci z podstawowego środowiska wykonawczego.
Delphi.NET jest martwy okres dłuższy niż 2 lata –
Tak, @User, a od Delphi 7 jest dziesięć lat go, też musi być martwy. Poza tym język Delphi jest nadal dostępny dla .Net przez Prism. –
Prism nawet nie próbuje wspólnego źródła, więc nie uważam tego za kontynuację. Z wyjątkiem znaku towarowego. –
Tak, robi.
Delphi Win32 nie zawiera śmieciarki po wyjęciu z pudełka, więc inne odpowiedzi na to pytanie są poprawne technicznie. Nie oznacza to jednak, że nie jest to możliwe lub że już nie istnieje. Dzięki wymiennym menedżera pamięci Delphi Barry Kelly wdrożony w pełni funkcjonalny wrapper dla Boehm garbage collector w 2004 roku
Zawiera przykładowy kod potwierdzający jego wykorzystania (w zasadzie tworzenia nieprzypisanych obiektów i oglądając je żuć GC). Są bardziej zaawansowane GC niż Boehm GC, ale to wyraźnie pokazuje, że jest to możliwe i może być używane prawie w sposób przejrzysty. Po prostu dodajesz jednostkę gc na początku klauzuli uses twojego projektu.
I chociaż nie słyszałem o żadnych projektach próbujących go, nic nie stoi na przeszkodzie, by ktoś opakował lub przenosił bardziej zaawansowany gc.
Delphi Prism
ma zbieranie śmieci, gdyż opiera się na .NET
Standardowy Delphi (native Win32)
nie ma Garbage Collection
Delphi Win32/64 nie ma kosza na śmieci. Możesz jednak skorzystać z mechanizmu liczenia odwołań natywnych Delphi, aby instancje zostały automatycznie zwolnione przy użyciu interfejsów.
Różnice między śmieciarzem a mechanizmem liczenia odnośników polegają na tym, że będziesz musiał zajmować się odwołaniami cyklicznymi, tj. Jeśli odniesienia A i B się nawzajem odwołują, musisz ręcznie przerwać cykl, aby zwolnić A lub B .
- 1. Czy mogę wymuszać odbiór śmieci w Javie?
- 2. Czy odbiór śmieci ma miejsce natychmiast po wywołaniu Hashmap.remove()?
- 3. Dodawanie timeout DatagramSocket - odbiór()
- 4. Jak zapobiec zbieraniu śmieci w GIT?
- 5. Populate Odbiór Struts2 formularzu zgłoszeniowym
- 6. Wyrzucanie śmieci w bashu
- 7. Odbiór dokładny cyfrowy mecz z ciągiem
- 8. "Delphi Fundamentals" w Delphi 2009
- 9. Usuwanie śmieci w wątkach Perla
- 10. Zbieranie śmieci w dalvik vm
- 11. Ręczne usuwanie śmieci w Pythonie
- 12. Spoiwo zapobiegające zbieraniu śmieci
- 13. Zbieranie i odbieranie śmieci
- 14. Algorytm zbierania śmieci JVM
- 15. nodejs wywóz śmieci wyjście
- 16. Wyrzucanie śmieci i cgo
- 17. Czas zbierania śmieci Java?
- 18. NodeJS zwracające śmieci JSON
- 19. "Wyspa izolacji" kolekcji śmieci
- 20. cURL zwrócenie śmieci dane
- 21. zsh w Emacs wyjściowych znaków śmieci
- 22. Zbiór śmieci w systemie Android (wykonane ręcznie)
- 23. Jakie są generacje w zbieraniu śmieci?
- 24. śmieci zbiór zmiennych instancji klasy w Ruby
- 25. Usuń znaki śmieci w języku arabskim
- 26. Jak wyłączyć zbieranie śmieci w GHC Haskell?
- 27. Wykrywanie homografii śmieci z findHomography w OpenCV?
- 28. Pracownik w tle i wywóz śmieci?
- 29. Jak utworzyć nieodkryte śmieci w python?
- 30. W trybie Emacsa nodejs dostać wiersz śmieci
Warto również wspomnieć o tym, że wszystko, co pochodzi od TComponent pobiera wskaźnik właściciela za pośrednictwem konstruktora, co powoduje zniszczenie obiektu wraz z jego właścicielem. –
delphi garbage zbiera niektóre typy danych, takie jak dynamiczna tablica, string. –
Delphi zna ARC (Automatyczne liczenie odwołań), sposób zarządzania czasem życia interfejsów (wdrażanie RefCount) i innymi typami. W dzisiejszych czasach najnowszy kompilator przenośny Delphi wprowadził ARC do obiektów. Jest kontrolowany przez dyrektywę kompilatora "{$ AUTOREFCOUNT}". patrz link poniżej: http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Automatic_Reference_Counting_in_Delphi_Mobile_Compilers – Lucas