title: Old Gen heap is full and the Eden and Survivor are low and almost empty
body: <p>A production environment became very slow recently. The cpu of the process took 200%. It kept working however. After I restarted the service it functioned normal again. I have several symptoms :
     The Par survivor space heap was empty for a long time and garbage collection took about 20% of the cpu time. </p>
  
  <p>JVM options:</p>
  
  <pre><code>X:+CMSParallelRemarkEnabled, -XX:+HeapDumpOnOutOfMemoryError, -XX:+UseConcMarkSweepGC, -                XX:+UseParNewGC, -XX:HeapDumpPath=heapdump.hprof, -XX:MaxNewSize=700m, -XX:MaxPermSize=786m, -XX:NewSize=700m, -XX:ParallelGCThreads=8, -XX:SurvivorRatio=25, -Xms2048m, -Xmx2048m
  
       Arch   amd64
       Dispatcher Apache Tomcat
       Dispatcher Version 7.0.27
       Framework  java
       Heap initial (MB)  2048.0
       Heap max (MB)  2022.125
       Java version   1.6.0_35
      Log path    /opt/newrelic/logs/newrelic_agent.log
      OS  Linux
      Processors  8
      System Memory   8177.964, 8178.0
  </code></pre>
  
  <p>More info in the attached pic
  When the problem occurred on the non-heap the used code cache and used cms perm gen dropped to half. </p>
  
  <p>I took the info from the newrelic.<img src="https://i.stack.imgur.com/tpjmB.png" alt="enter image description here"></p>
  
  <p>The question is why does the server start to work so slow.</p>
  
  <p>Sometimes the server stops completely, but we found that there is a problem with PDFBox, when uploading some pdf and contains some fonts it crashes the JVM.  </p>
  
  <p>More info: I observed that every day the Old gen is filling up. Now I restart the server daily. After restart it's all nice and dandy but the old gen is filling up till next day and the server slows down till needs a restart.</p>