In-memory caching av mellanliggande data och ivrig kombination av data i shuffle buffertar har visat sig vara mycket effektivt för att minimera re-computation och I/O kostnad i distribuerade databehandlingssystem som Spark och Flink. Det har dock också rapporterats allmänt att dessa tekniker skulle skapa en stor mängd långlivade dataobjekt i högen, som snabbt kan mätta sopuppsamlaren, särskilt vid hantering av en stor datauppsättning, och därmed skulle begränsa skalbarheten i systemet. För att eliminera detta problem föreslår vi en livstidsbaserad ram för minneshantering, som, genom att automatiskt analysera de användardefinierade funktionerna och datatyperna, får den förväntade livslängden för dataobjekten, och sedan allokerar och släpper minnesutrymme i enlighet därmed för att minimera sophämtningen overhead. Framför allt presenterar vi Deca, ett konkret genomförande av vårt förslag på toppen av Spark, som på ett öppet sätt förmultnar och grupperar objekt med liknande livstider i bytesmatriser och frigör deras utrymme helt och hållet när deras livstider når sitt slut. En omfattande experimentell studie med hjälp av både syntetiska och verkliga dataset visar att, i jämförelse med Spark, Deca kan 1) minska insamlingstiden för sopor med upp till 99,9%, 2) för att uppnå upp till 22,7x hastighet i fråga om utförandetid i fall utan dataspill och 41,6x hastighetsökning i fall med dataspill, och 3) att konsumera upp till 46,6% mindre minne.
Deca REF föreslår en livstidsbaserad minneshanterare för att minska GC overhead, genom att analysera dataobjektens livstider i användardefinierade funktioner och gruppera objekten med liknande livstider i byte-matriser.
Lifetime-Based Memory Management for Distributed Data Processing Systems