真正的零拷贝有两种方式: mmap+write Sendfile mmap 是一种内存映射文件的方法,即将一个文件或者其他对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对应关系。 这样就可以省掉原来内核 Read 缓冲区 Copy 数据到用户缓冲区,但是还是需要内核 ...
分类:
其他好文 时间:
2020-05-20 18:34:29
阅读次数:
72
转自 https://www.jianshu.com/p/5841df465eb9 我们来聊聊GZIPOutputStream 和 GZIPInputStream, 如果不关闭流会引起的问题,以及GZIPStream申请和释放堆外内存的流程, Let's do it! 引子 在我的工程里面又一个工具 ...
分类:
编程语言 时间:
2020-05-14 15:11:19
阅读次数:
92
作为一个JVM进程,EXecutor的内存管理建立在JVM的内存管理之上,Spark对JVM的对内空间进行了更为详细的分配,以充分利用内存。同时,Spark引入了堆外内存,使之可以直接在工作节点的系统内存中开辟空间,进一步优化内存的使用。 堆内内存收到JVM统一管理,堆外内存是直接向操作系统进行内存 ...
分类:
其他好文 时间:
2020-05-13 23:30:58
阅读次数:
71
本文来自: PerfMa技术社区 PerfMa(笨马网络)官网 问题概述 昨天晚上同事突然找我看个问题,有个系统一启动怎么就发生了System GC(从GC日志里看到了GC Cause是System GC),按照我的经验,这十有八九是堆外内存不够所致,但是启动就不够,这似乎不太可能,于是我又说是不是 ...
分类:
其他好文 时间:
2020-04-28 14:39:55
阅读次数:
44
Netty 异步事件驱动的网络应用程序框架。 特点 高并发 基于NIO开发的网络通信框架 传输快 零拷贝 Netty的接受和发送bytebuffer使用堆外直接内存进行socket读写,传统堆内存进行socket读写,JVM将堆内存buffer拷贝到内存,然后写入socket。相比之下,消息在发送多 ...
分类:
Web程序 时间:
2020-04-07 22:30:42
阅读次数:
195
一、前言 持久化主要是做灾难恢复、数据恢复,也可以归类到高可用的一个环节中去,比如你 redis 整个挂了,然后 redis 就不可用了,你要做的事情就是让 redis 变得可用,尽快变得可用。 重启 redis,尽快让它堆外提供服务,如果没做数据备份,这时候 redis 启动了,也不可用啊,数据都 ...
分类:
其他好文 时间:
2020-03-25 23:46:11
阅读次数:
99
https://blog.csdn.net/varyall/article/details/86514888 https://blog.csdn.net/weixin_33898233/article/details/91480055?depth_1-utm_source=distribute.pc ...
分类:
其他好文 时间:
2020-03-24 16:02:58
阅读次数:
143
概述 广义的堆外内存 说到堆外内存,那大家肯定想到堆内内存,这也是我们大家接触最多的,我们在jvm参数里通常设置-Xmx来指定我们的堆的最大值,不过这还不是我们理解的Java堆,-Xmx的值是新生代和老生代的和的最大值,我们在jvm参数里通常还会加一个参数-XX:MaxPermSize来指定持久代的 ...
分类:
其他好文 时间:
2020-03-19 16:29:18
阅读次数:
47
最大堆外内存的配置 -XX:MaxDirectMemorySize=15g 分配堆外内存 java.nio.ByteBuffer#allocateDirect DirectByteBuffer 类是包权限的,使用 unsafe 分配和回收内存 class DirectByteBuffer exten ...
分类:
编程语言 时间:
2020-02-21 17:52:58
阅读次数:
71
Unsafe 类是JDK底层类库提供的、基于Java内存模型访问底层的机制,通过该类可以实例化对象、直接操作堆外内存(直接内存)、CAS原子操作等。Java基于AQS实现的同步工具类、并发容器,Netty对堆外内存的操作都基于该类实现。 获取Unsafe实例 中提供了静态方法 可以直接获取到 对象, ...
分类:
其他好文 时间:
2020-01-29 19:51:07
阅读次数:
92