Java程序占用的内存可能会大于Xmx

很多人认为Xmx和-Xms参数指定的就是Java程序将会占用的内存,但是这实际上只是Java堆对象将会占用的内存。堆只是影响Java程序占用内存数量的一个因素。
除了堆,影响Java程序所占用内存的因素还包括:栈、永生代、JVM本身、NIO中的DirectBuffer等。
假设Xmx为1024m,MaxPermSize为256m,Xss为512k,有100个线程。考虑到socket缓冲区、JNI等,一般大约是jvm内存的5%左右。
DirectBuffer占用的空间是不包含在JVM的空间中的,如果使用了DirectBuffer,除了JVM还需要监控DirectBuffer占用的空间大小,为操作系统留下足够的内存。

https://blog.csdn.net/weixin_31115195/article/details/114504749

https://blog.csdn.net/qq_16240085/article/details/106641569

posted @ 2021-06-26 09:42  小路不懂2  阅读(875)  评论(0编辑  收藏  举报