Dear Icy devs,
I have 2 issues with Icy 2.x
- Java / OS:
Java™ SE Runtime Environment 1.8.0_101-b13 (64 bit)
Running on Windows 10 10.0 (amd64)
- I develop Live Mouse Tracker. In this program, I manage a continuous stream of images coming from kinect devices. So it is a specific use of Icy since I manage and create a large number of IcyBufferedImages.
- For realtime reason, and to avoid freeze during GC, I am using a specific one, I launch Icy with this command line:
java -Xmx6G -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=60 -XX:MaxTenuringThreshold=4 -XX:MaxNewSize=384m -XX:NewSize=384m -XX:SurvivorRatio=12 -jar icy.jar -x plugins.fab.livemousetracker.LMTLauncher >log.txt 2>&1
- My app use about 1.5GB memory all the time. With version 2.x, the memory leak is about 0.5GB per hour which lead to crash in several day experiments (and before crash, the system is lagging for a long time). (typical experiment duration is 3 days to 1 week, some users use it for 10 days).
- Also, on the same computer, same experiment starting (so memory is not an issue at this moment). Using internal CPU monitor of Icy: 30 to 40 % CPU with 3 animals with 1.9.10 version against 60 to 70% with 2.0.3 version.
Using YourKit, I saw that there is an hashmap in your new memory cache system introduced in Icy 2.0. This links to a weakReference that is never released. I tried to de activate the cache system but this is still keeping images.
- This is maybe due to the specific garbage collector I am using ?
- I am rolling back to 1.9.10 which works fine.
It would be super cool if you could add some perf/memory tests involving continuous creation and destruction of images in your pre-test release pipe !