title: Java app calls C++ DLL via JNI; how best to allocate memory?
body: <p>Basic summary of question is:
  How do I best optimize my memory allocation to give as much memory to the DLLs I access through JNI as possible?  What should I aim to minimize, what should I aim to maximize, etc.</p>
  
  <p>SYSTEM:
  Running JBoss 6 as a Windows 32 Service in a 32-bit system with 4 GB RAM.  I do understand there are maximum restrictions on memory for Java Heap.  JVM is <strong>JRE1.6.0_26</strong></p>
  
  <p>SERVICE:
  Installed under JBoss is a webapp which receives requests from clients; each request calls the C++-built DLL through JNI to process an image file in some fashion or other.  </p>
  
  <p>ISSUE:
  Occasionally, with larger or some (not all) LZW-compression images, the calling java class receives a message that the DLL experienced a Global Memory Depletion and failed to complete the requested process.</p>
  
  <p>There is nothing else actively running on the server beyond basic windows processes.</p>
  
  <p>Current JBOSS App Server memory settings are as follows, but may be excessive:</p>
  
  <p>-Xms1024m -Xmx1024m -Xss1024k -XX:MaxPermSize=128m </p>
  
  <p>I am trying to determine the best memory settings to give as much resources to the JNI DLL, as I understand JNI does not use any memory allocated to the Java Heap.</p>
  
  <p>I have read these, but did not find them helpful to answer my question:</p>
  
  <p><a href="https://stackoverflow.com/questions/5986645/java-jni-memory-allocation-partitioning">Java JNI : Memory allocation / partitioning</a></p>
  
  <p><a href="https://stackoverflow.com/questions/6466882/can-jconsole-be-used-to-identify-memory-leaks-in-jni-c-objects">Can jconsole be used to identify memory leaks in JNI C++ objects?</a></p>
  
  <p><strong>The two answers currently supplied do not address the inherient question.</strong></p>
  
  <p><strong>Current memory of JBoss server after one week with JVM params set as above (TaskManager indicates java.exe process at 750,672k)</strong></p>
  
  <pre><code>Total Memory Pools: 5
  
  Pool: Code Cache (Non-heap memory)
  
      Peak Usage : init:2359296, used:7317312, committed:7438336, max:50331648
      Current Usage : init:2359296, used:7306496, committed:7438336, max:50331648
  
  
          |---------| committed:7.09Mb
          +---------------------------------------------------------------------+
          |/////////| | max:48Mb
          +---------------------------------------------------------------------+
          |---------| used:6.97Mb
  
  
  Pool: PS Eden Space (Heap memory)
  
      Peak Usage : init:268500992, used:354811904, committed:354811904, max:355991552
      Current Usage : init:268500992, used:270153472, committed:354091008, max:354156544
  
  
          |--------------------------------------------------------------------| committed:337.69Mb
          +---------------------------------------------------------------------+
          |///////////////////////////////////////////////////// || max:337.75Mb
          +---------------------------------------------------------------------+
          |----------------------------------------------------| used:257.64Mb
  
  
  Pool: PS Survivor Space (Heap memory)
  
      Peak Usage : init:44695552, used:44694896, committed:78643200, max:78643200
      Current Usage : init:44695552, used:0, committed:1835008, max:1835008
  
  
          |---------------------------------------------------------------------| committed:1.75Mb
          +---------------------------------------------------------------------+
          | | max:1.75Mb
          +---------------------------------------------------------------------+
          | used:0b
  
  
  Pool: PS Old Gen (Heap memory)
  
      Peak Usage : init:715849728, used:123671968, committed:715849728, max:715849728
      Current Usage : init:715849728, used:104048648, committed:715849728, max:715849728
  
  
          |---------------------------------------------------------------------| committed:682.69Mb
          +---------------------------------------------------------------------+
          |////////// | max:682.69Mb
          +---------------------------------------------------------------------+
          |---------| used:99.23Mb
  
  
  Pool: PS Perm Gen (Non-heap memory)
  
      Peak Usage : init:16777216, used:91989664, committed:134217728, max:134217728
      Current Usage : init:16777216, used:90956472, committed:90963968, max:134217728
  
  
          |----------------------------------------------| committed:86.75Mb
          +---------------------------------------------------------------------+
          |//////////////////////////////////////////////| | max:128Mb
          +---------------------------------------------------------------------+
          |----------------------------------------------| used:86.74Mb
  </code></pre>