I want to know the any tools / methods to find out the NativeHeap , ThreadMemory , code cache and Perm Memory details of a java process.
I am running web server application on Windows Platform and set the Java Heap Size as -Xms 100 MB min and -Xmx 400 MB. I am monitoring the Memory usage of this process in TaskManager and it will be growing constantly.
After 24 hours running this process memory usage is 320 MB.
After 50 hours running this process memory usage is 540 MB.
Also I have checked the Heap Memory size using jvisualvm tool as well as Runtime.totalMemory/freeMemory and the value is not exceeding 100 MB. The jvisulavm is not connecting to the process continuously. Here what I am doing is just connect the process & check the heap using Monitor button and close it. So the jvisulavm won't apply any load to the server.
I don't know how the memory keeps on growing. As per my knowledge the Task Manager memory usage will comprise of java heap memory + PERM+ code cache memory + NativeHEAP memory+ ThreadMemory. I am sure that Java Heap size won't growing but may be native method / native code will consume more memory.
Please let me know how to find out the native Heap / JNI codes consumes memory as well as Thread Memory usage....