Skrivet av willesakken:
Jag tänker att är prestanda så viktigt för ditt program att du vill ha mer kontroll över GCn så kanske man bör fundera ifall man ska använda java över huvudtaget.
Jag skulle säga att det har att göra med din systemlösning. Du kanske kommer fram till att du skall köra olika GC på olika delar av systemlösningen för bästa prestanda och onödiga frysningar i användargränssnitt. Det kan låta löjligt, men när du har ett större system kan det göra stor skillnad.
Det skulle kunna vara aktuellt att använda andra programmeringsspråk än Java, men varje språk har sina fördelar och nackdelar och det kan vara önskvärt att inte ha för många olika språk i ett större system. Ofta är man beroende av olika tredjepartspaket också - det finns ganska många till Java, likartade till C# eller Python. Men det blir ofta en hel del trubbel att blanda.
Själv har jag inte laborerat så mycket med olika typer av GC, men ibland anropat System.GC() för att få en garbage collection innan jag kollar hur mycket minne som är allokerat för att avgöra om jag har små minnesläckor som växer över lång tid. Kör en GC, kolla minnesallokering och om den är lika över lång tid (litet variation kan det alltid vara) så är allt lungt, är trenden växande så är det ett problem. Inte en perfekt approach, men för att se trender räcker det och då är det bra att känna till vilken GC man har och vad man skall förvänta sig.
Det är helt enkelt "next level" på Java-programmering att fundera på vilken GC man skall köra. Prestanda är ett generellt ord som antingen kan ange kontinuerligt dataflöde eller transaktionslatens, och vill du ha hög throughput under en timme och sedan avsluta programmet så är det en typ av GC du vill ha där den kan ägna all tid i slutet av din körning till GC-arbete, har du användargränssnitt så vill du antagligen ha en annan där du istället kör GC i små paket ofta och döljer tiden det tar.