基本概念
Page cache(页面缓存)
页缓冲或文件缓冲
Buffer cache(块缓存)
块缓冲,是对物理磁盘上的一个磁盘块进行的缓冲
Swap space(交换空间)
虚拟内存的表现形式。系统为了应付一些需要大量内存的应用,而将磁盘上的空间做内存使用
DMA(Direct Memory Access,直接存储器访问)
零拷贝
用户态与内核态的数据拷贝的次数为零(不使用流拷贝,使用指针,文件和进程虚拟地址空间映射)
linux底层 sendfile和mmap
java
ByteBuffer申请的堆外内存也是由GC负责回收的,Hotspot在GC时会扫描Direct ByteBuffer对象是否有引用,如没有,当堆内的引用被gc回收时通过虚拟引用回收其占用的堆外内存
但是堆内可能只是一个对象引用的内存占用,不至于GC,导致堆外内存占用大,而堆内不需要GC。
堆外内存使用框架
Ehcache
参考
https://blog.csdn.net/daijiguo/article/details/106457319
https://zhuanlan.zhihu.com/p/161939673
https://juejin.cn/post/6844903744115572749
Java堆外内存使用
https://blog.csdn.net/qq_40977118/article/details/10812443
https://blog.csdn.net/liuxiao723846/article/details/89814005
Spring Boot引起的“堆外内存泄漏”排查及经验总结
https://tech.meituan.com/2019/01/03/spring-boot-native-memory-leak.html