1

I'm using WebSphere Application Server and the WAS servers runs using IBM JVM with a Garbage Collection policy called Generational Concurrent (gencon), which splits heap memory into two parts:

Nursery: for new objects

Tenured: long lived objects

Reading native_stderr.log I could see that garbage collector is running to many time triggered by allocation failure on nursery area.

Here I have a strange behavior. My JVM is configured with a maximum of 20gb. My Nursery area actually almost 4gb. Look the graph (pink line) below. Nursery usage and GC result calls

When GC run, it frees almost 3.5gb. After some seconds (about 30s for example), all this 3.5 is already consumed and GC needs to run again... and it frees almos 3.5gb again, and after some seconds is all consumed again, so GC runs again and I have this kind of infinite loop on GC.

Look the table below and you'll this behavior. GC calls (data table)

Is there a way to check who(threads, objects) is consuming the nursery area so fast?

I really appreciate any help.

Thanks

Ranieri Mazili
  • 723
  • 6
  • 21
  • If you dont get got answers here: look around here: http://www.ibm.com/developerworks/ ... I think IBM has some open forums for their products too. The other thing: tried running some profiler? – GhostCat Nov 22 '16 at 10:53
  • that sounds fairly normal to me, assuming your application is busy. what is your problem with that behavior? – the8472 Nov 22 '16 at 11:53
  • I just feel bad looking that 3.5b is consumed in 30gb, then it frees almost the same size in one second and them consume it again after 30 seconds. Do you really think it's a normal behavior? – Ranieri Mazili Nov 22 '16 at 15:39
  • Every [profiling tool](https://www.google.de/?#q=java%20profiling%20tools) should be able to tell you which thread is doing the allocation and even the type of the objects created. That’s what they are for. – Holger Nov 22 '16 at 17:57
  • @Holger can you recommend a good free java profiling tool? If possible, a tool that doesn't need to be installed on server side. I'm using WebSphere and would like to do this profiling in a non-intruse way. – Ranieri Mazili Nov 23 '16 at 11:34
  • You can try [VisualVM](https://visualvm.github.io/). In Oracle’s jdk, it is already included, see `bin/jvisualvm`. Or look at [this question](http://stackoverflow.com/q/948549/2711488). – Holger Nov 23 '16 at 11:41

0 Answers0