It looks like minor GC happens very frequently, every 1-2 seconds. I also did statistics on major GC collection, it happens about every 800 seconds.
Upon terminating the application, I have the following at the end of my gc log file:
Heap def new generation total 9216K, used 3705K [0x16990000, 0x17380000, 0x17d40000) eden space 8256K, 43% used [0x16990000, 0x16d1c1e8, 0x171a0000) from space 960K, 7% used [0x171a0000, 0x171b24a8, 0x17290000) to space 960K, 0% used [0x17290000, 0x17290000, 0x17380000) tenured generation total 121024K, used 103325K [0x17d40000, 0x1f370000, 0x26990000) the space 121024K, 85% used [0x17d40000, 0x1e227718, 0x1e227800, 0x1f370000) compacting perm gen total 12288K, used 3172K [0x26990000, 0x27590000, 0x2a990000) the space 12288K, 25% used [0x26990000, 0x26ca9278, 0x26ca9400, 0x27590000) ro space 8192K, 62% used [0x2a990000, 0x2ae8e4e8, 0x2ae8e600, 0x2b190000) rw space 12288K, 52% used [0x2b190000, 0x2b7d0e78, 0x2b7d1000, 0x2bd90000)
It is a charting software with script execution capability. I am having Outofmemory problem when having too many charts open or with too many scripts running. The above log was captured with a low load testing.
Anybody would have any suggestion based on the log? Does the minor GC happen too frequently? Would I benefit by using Concurrent Low Pause Collector instead of serial collector on such duo-core CPU chip? Somebody told me such CPU can not be considered real 2-CPU. So I am hesitant to go that route.
I am going to run medium-high load testing on a better machine to produce more gc logs.
Thank you for any input as I am really new on resolving java memory issues.