Minnesanalys och justering av skräpsamling
Diagnostisera växande minnesanvändning, granska heapar per process och justera Erlangs skräpsamling för att hålla långlivade noder stabila.
Minnesanalys och justering av skräpsamling är en gratis lektion i Erlang OTP: Programmering av distribuerade och feltoleranta system på CoddyKit. Detta är lektion 4 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Erlang OTP: Programmering av distribuerade och feltoleranta system, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Erlang OTP: Programmering av distribuerade och feltoleranta system innehåller totalt 4 lektioner.
Varför minnet är viktigt
Erlang-noder kan köras i månader. En liten läcka per process eller en obegränsad meddelandekö växer tyst tills operativsystemet avslutar noden. Det är viktigt att kunna observera minnesanvändningen.
Minnesanvändning i hela systemet
erlang:memory/0 returnerar en uppdelning i bland annat total minnesanvändning, processer, atomer, binärer och ETS. Bevaka de kategorier som växer över tid.
erlang:memory().Inspektera enskilda processer
process_info/2 visar heapen, meddelandeköns längd och mer för en enskild process — vilket är viktigt när ni ska hitta problemet.
process_info(Pid, [memory, message_queue_len, heap_size]).Fällan med meddelandekön
Om en process tar emot meddelanden snabbare än den hanterar dem växer dess meddelandekö utan gräns. Ett högt värde för message_queue_len är det klassiska tecknet på en överbelastad konsument.
Binärer och Refc-läckor
Stora binärer är referensräknade och delas utanför heapen. En process som behåller en liten delbinär kan hålla kvar en enorm överordnad binär. Bevaka minneskategorin binary noggrant.
Hitta de värsta problemen
Sortera alla processer efter minnesanvändning för att snabbt hitta läckor.
lists:sort(fun({_,A},{_,B}) -> A > B end,
[{P, element(2, process_info(P, memory))} || P <- processes()]).Så fungerar Erlangs GC
Varje process har en egen privat heap och skräpsamlas oberoende — det finns ingen global paus där hela systemet stoppas. Insamlingen körs när processens heap blir full.
Utlös GC manuellt
För en process som ni misstänker håller kvar skräp kan ni tvinga fram en insamling och mäta igen.
erlang:garbage_collect(Pid),
process_info(Pid, memory).Justera heapen
Startalternativ som min_heap_size och fullsweep_after finjusterar GC för processer med hög belastning, genom att byta mer minne mot färre insamlingar.
spawn_opt(fun work/0, [{min_heap_size, 1000}, {fullsweep_after, 10}]).Viloläge
Inaktiva processer kan anropa hibernate för att komprimera sin heap till minsta möjliga storlek och frigöra minne tills nästa meddelande anländer — utmärkt för många anslutningar som oftast är inaktiva.
proc_lib:hibernate(?MODULE, loop, [State]).Övervaka ETS-tabeller
ETS-tabeller ligger utanför processernas heapar och krymper inte automatiskt. En växande minneskategori för ets betyder ofta att gamla rader finns kvar. Rensa regelbundet eller använd tabeller med begränsad storlek.
ets:info(my_table, memory).Snabbkontroll
Testa era kunskaper om minnesoptimering.
Sammanfattning
Ni har lärt er att analysera och finjustera minnesanvändningen:
erlang:memory/0ger en översikt över hela systemetprocess_info/2granskar heap och brevlåda för enskilda processer- Växande brevlådor och fixerade binärer är vanliga orsaker till minnesläckor
- Varje process genomgår garbage collection separat; ingen global paus uppstår
- Finjustera med spawn-alternativ och använd
hibernateför inaktiva processer
Lär dig Erlang med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Minnesanalys och justering av skräpsamling” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Erlang OTP: Programmering av distribuerade och feltoleranta system, inklusive ”Minnesanalys och justering av skräpsamling”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Erlang OTP: Programmering av distribuerade och feltoleranta system innehåller totalt 4 lektioner.
Vad lär jag mig i ”Minnesanalys och justering av skräpsamling”?
Diagnostisera växande minnesanvändning, granska heapar per process och justera Erlangs skräpsamling för att hålla långlivade noder stabila. Ni övar på Erlang OTP: Programmering av distribuerade och feltoleranta system med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Erlang OTP: Programmering av distribuerade och feltoleranta system?
Du behöver inga förkunskaper. Utbildningen i Erlang OTP: Programmering av distribuerade och feltoleranta system på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.
Hur lång tid tar lektionen ”Minnesanalys och justering av skräpsamling”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Erlang OTP: Programmering av distribuerade och feltoleranta system-lektionen?
Ja. Varje Erlang OTP: Programmering av distribuerade och feltoleranta system-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Tekniker för Erlang-profilering
- Spårning och felsökning av distribuerade system
- Integration av mätvärden och övervakning
- Minnesanalys och justering av skräpsamling