title: Tomcat7: Out of memory error occurred when executing shutdown.sh
body: <p>My Tomcat server has been running for several days, but I can't shut it down normally because when executing <code>shutdown.sh</code>, I got this error:</p>
  
  <pre><code># root@iZ94hjppdqzZ:~/projects/taolijie# cat hs_err_pid5519.log 
  # There is insufficient memory for the Java Runtime Environment to continue.
  # Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
  # Possible reasons:
  #   The system is out of physical RAM or swap space
  #   In 32 bit mode, the process size limit was hit
  # Possible solutions:
  #   Reduce memory load on the system
  #   Increase physical memory or swap space
  #   Check if swap backing store is full
  #   Use 64 bit Java on a 64 bit OS
  #   Decrease Java heap size (-Xmx/-Xms)
  #   Decrease number of Java threads
  #   Decrease Java thread stack sizes (-Xss)
  #   Set larger code cache with -XX:ReservedCodeCacheSize=
  # This output file may be truncated or incomplete.
  #
  #  Out of Memory Error (os_linux.cpp:2673), pid=5519, tid=3061726064
  #
  # JRE version:  (8.0_45-b14) (build )
  # Java VM: Java HotSpot(TM) Server VM (25.45-b02 mixed mode linux-x86 )
  # Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
  #
  </code></pre>
  
  <p>Therefore I have to kill Tomcat in order to shut it down. But the weird thing is that Tomcat worked normally when this error is generated(It can process web request normally).</p>
  
  <p>Here are the VM options:</p>
  
  <pre><code>-server -Xms1G -Xmx1G -XX:+UseG1GC
  </code></pre>
  
  <p>My server has 2GB memory. Could anyone figure out what's happening? 
  Thanks!!</p>