java.exe process uses more memory and does not free it up -


i have java application when in idle state before complex executions, uses 23 mb in heap , java.exe process size in taskmanager around 194 mb. after complex operations, size of java.exe grew around 500mb , heap size grew up. heap size reduced 23mb after few full gc calling system.gc() method. size of java.exe reduced around 237mb around 600mb still have around 43 mb of data in it. there way reduce this? or due behavior?

this normal, don't worry. jvm acquires memory when needs execute complex logic. when java done processing tasks jvm still keep memory reserved space , not released os. architecture helps in performance because jmv not have request same memory again underlying os. still within range define in -xmx jvm parameter.

see ibm link interesting details. http://www-01.ibm.com/support/docview.wss?uid=swg21326774

unfortunately 1 of grey areas of jvm; don't have of control on how os , jvm share memory between each other. think of jvm virtual os requires memory run. both parent os , vm hungry resources , want hang on acquired resources memory possible. requesting more memory os time consuming operation most of jvms not release memory os when don't need anymore.

see white paper oracle more details on internal jvm memory management. http://www.oracle.com/technetwork/java/javase/memorymanagement-whitepaper-150215.pdf

i suggest read ibm link first , can delve weird world of memory explained in white paper. both of these links informative , interesting.


Comments

Popular posts from this blog

.htaccess - First slash is removed after domain when entering a webpage in the browser -

Automatically create pages in phpfox -

c# - Farseer ContactListener is not working -