Java: memory usage issue
I have set maxmimum memory to this value
java -Xmx280m -jar ...
Code for using memory usage information (on button click):
int mb = 1024*1024;
//Getting the runtime reference from system
Runtime runtime = Runtime.getRuntime();
System.out.println("##### Heap utilization statistics [MB] #####");
//Print used memory
System.out.println("Used Memory:"
+ (runtime.totalMemory() - runtime.freeMemory()) / mb);
//Print free memory
System.out.println("Free Memory:"
+ runtime.freeMemory() / mb);
//Print total available memory
System.out.println("Total Memory:" + runtime.totalMemory() / mb);
//Print Maximum available memory
System.out.println("Max Memory:" + runtime.maxMemory() / mb);
The program shows the following output (2 clicks + new tabs, etc.):
Used Memory:41
Free Memory:123
Total Memory:165
Max Memory:249
Used Memory:67
Free Memory:97
Total Memory:165
Max Memory:249
However, when I look at the Linux performance monitor (Centos 7) it shows 330mb
for this java process. How can this be explained?
+3
user2022068
source
to share
2 answers
JVM memory consists of the following segments:
- Heap memory, which is the storage for Java objects
- Non-Heap Memory, which is used by Java to store loaded classes and other metadata
- JVM code itself, JVM internal structures, loaded agent agent code and data, etc.
These parts can be configured with flags that were passed during the start of the process:
+2
source to share