Hi Tao On Wed, Aug 8, 2018 at 4:40 AM, Tao Mao <yiyeg...@gmail.com> wrote: > Hi gc exports, > > I have a Java application with following JVM options: > "-Xms128m -Xmx256m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m" > > When I use top to check memory usage, I got a very high virtual memory but a > reasonable resident memory as below: > > PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND > 93704 root 20 0 11.4g 477m 19m S 0.0 0.1 26:53.65 java > > I understand the claimed virtual memory can be more than heapsize + > metaspaceSize due to overheads in JVM implementation. I would expect this > number to be a couple times of the size (heapsize + metaspaceSize) at most. > But in this case it's >20 times. > > The claimed virtual memory usually is comprised of heap size, metaspace > Size, and stack space. Could someone explain what else can contribute to > this high markup? Thanks. >
just taking a wild guess here. Do you have an abnormal high number of threads? (if this is on Linux: cat /proc/<pid>/status | grep Threads) High virtual size may be caused by a high number of threads which do not do much and hence only use the first few pages of their thread stacks. With 1M default stack size for java threads a few thousand threads may explain your large virtual size. Note this is just one of many possible explanations fitting your scenario. > # java -version > java version "1.8.0_172" > Java(TM) SE Runtime Environment (build 1.8.0_172-b11) > Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode) > This is the commercial Oracle JDK, not OpenJDK. > Regards, > Tao Mao > Best regards, Thomas > _______________________________________________ > hotspot-gc-use mailing list > hotspot-gc-use@openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use > _______________________________________________ hotspot-gc-use mailing list hotspot-gc-use@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use