通常情况下, JVM占用的内存不仅仅是-Xmx, -Xms等指定的大小, 因为JVM也是一个应用, 它需要额外的空间去完成它的工作, 除了堆外, JVM会分配内存的地方包括以下这些: Metaspace: 元数据区, 存储类, 及方法的元数据信息 Threads: 线程, 线程里的栈还是比较耗内存的, 在64位操作系统上, 默认栈的大小为1MB, 当然可以通过-Xss配置. 因为一般情况下线程的数量是没有限制的, 因此可能会占用极其多的内存. Code Cache: JVM通过JIT把字节码转换…