Wpis z mikrobloga

@SmacznyPies: ale języki wyższego poziomu też pozwalają na wyczyszczenie pamięci w miarę potrzeb. Taki C# na którym działam ma System.GC.Collect()

To nie jest tak, że sie nie da. Zwyczajnie nie jest to przewaznie potrzebne, bo Garbage collectory są robione przez prawdziwych specjalistów w swojej branży i mają wiele optymalizacji o których junior nie pomyśli

C++ lubię ofc. ale twój wpis zwyczajnie jest dziwny
@SmacznyPies: warto trochę poczytać. GC używane w javie (np. parallel czy G1) sprawiają, że programy są dużo szybsze, niż jakby było używane podejście new/delete. Na reddicie często widzę takie artykuły "why my rust program is slower than java/kotlin equivalent" i najczęstszą przyczyną są niepotrzebne alokacje. Tyle, że alokowanie w Javie jest dużo (naprawde dużo) szybsze, niż takie new/delete, przez co pisząc typowy kod na szybko nie ponosisz tej kary aż tak
no a kto zbiera śmieci ze stosu?


@SmacznyPies: w każdym języki tak to działa. Można to podciągnać pod GC, tylko, że naczelną funkcjonalnością GC jest wykrywanie, czy dana pamięć jest jeszcze używana czy nie. W przypadku stosu jest to trywialne
@Saly: @SmacznyPies: Tylko taka uwaga że w cpp/rust spokojnie można zasuwać tak szybko jak w javie/c# nawet alokując w #!$%@?, tylko wtedy też się robi własny alokator. Alokujesz więcej pamięci z gory co by nie martwic sie o pytanie systemu i używasz samemu jak potrzebujesz. Ale tak to właśnie daltego java tak #!$%@? przy dużej ilości alokacji, bo zjada sobie z gory znacznie wiecej pamieci niz potrzebuje i nie musi