(1)Director Memory
主要在nio中会使用,在内存不足时会抛出OOM或者OOM:Direct buffer memory。
(2)线程堆栈
为每个线程分配的栈空间,用于保存局部变量,执行程序代码。内存不足时可能抛出StackOverflowError或者OOM:unable to create new native thread(即没有足够空间建立新的线程)。
(3)socket缓存区
每个socket都有Receive和Send两个缓存区,分别占用37k和25k,使用socket连接比较多时也会占用较多内存。内存不足时会抛出IOException:Too many open files异常。
(4)JNI代码
如果代码中使用了JNI调用本地库,那么本地库使用的内存也不再堆中。
(5)虚拟机和GC
虚拟机和GC的代码执行也要消耗一定的内存。