Underligt memory-leak
Jeg har en Java-server kørende på en pænt hurtig maskine med 1 GB RAM og IBM's JRE 1.4.1 på en Linux Debian distribution. Serveren anvender NIO til netværkskommunikationen og ByteBuffer'e allokeret i den native hukommelse, altås ikke i JVM'en.Når jeg sidder og observerer ressource-forbruget i programmet 'top', kan jeg se at den brugte mængde RAM langsomt vokser med ca. 100 kb for hver 5-10 sekunder, og den falder aldrig igen, som følge af klient-antallet daler eller anden garbage collection.
Jeg har analyseret serveren med profileren fra Borland og kan konstatere at der i heap'en ikke er et memory-leak. Når klienter disconnecter, bliver der ryddet korrekt op og ingen objekter bliver tilbage, som ikke må.
Nogen der lige ved hvad det kan skyldes?? Det er ikke så fedt at alle RAM bliver opbrugt i løbet af en dag. Jeg har tænkt lidt over de native ByteBuffer'e; de tæller garanteret ikke med i heap-størrelsen, men er det stadig garbage collectore der sørger for at fjerne ByteBuffer'ne, når ikke de bruges mere (ikke har nogen referencer til sig) - man har jo ikke mulighed for at slette eller lukke en ByteBuffer.
