我们都知道Terracotta收购了EhCache,同时推出了基于off-heap技术的bigMemory,从而摆脱JVM GC带来的性能问题;
就Java 本地Cache(非分布式)而言,存在3个地方可以存放数据:Heap, OffHeap和Disk
BigMemory非开源产品,所以其源码不能通过正常渠道拿到。
同时,有一个开源产品DirectMemory实现了类似BigMemory的Cache实现,
https://github.com/raffaeleguidi/DirectMemory
它的类图:
使用:
Cache.init(10, 100);
Cache.put("test1", "t".getBytes());
Cache.put("test2", "t".getBytes());
Cache.put("test3", "t".getBytes());
byte[] p = Cache.retrieve("test1");
存在的问题:
- Cache类是单例,在同一个JVM里,不能根据实际应用创建不同的Cache(可以实现自己的Cache);
- OffHeapMemoryBuffer中ByteBuffer 空间存在浪费;
- 要根据业务类型,合理分配OffHeapMemoryBuffer的容量;
- 目前Map<key>还是存放在Heap里,只是Value存放在Off-Heap,不过可以根据需要修改代码;
Direct-Memory依赖的其他类库
- JoSQL SQL for Java Objects http://josql.sourceforge.net/
- guava google-common-collection http://code.google.com/p/guava-libraries/
- 其中的MapMaker的使用
参考:
- JDK1.4引入的DirectByteBuffer
- BigMemory
- 大小: 14.3 KB
- 大小: 69.5 KB
分享到:
相关推荐
这两种传输方式都是为了在数据传输过程中实现更高效的任务调度和更少的处理器干预。AB同步传输模式特别适用于处理器需要同时处理两个不同数据流的情况。 参数RAM(PaRAM)是EDMA3控制器用于存储传输参数的一块内存...
远程直接内存访问(Remote Direct Memory Access,RDMA)是一种高效的数据传输技术,它允许网络设备直接读取或写入远程服务器的内存,而无需通过CPU和操作系统内核的介入,从而显著提高了数据传输速度和系统整体性能...
本示例将详细介绍如何在STM32F407上通过串口(USART)、DMA(Direct Memory Access)和中断机制实现高效的数据收发。 串口通信(USART,通用同步/异步收发传输器)是STM32中的一种外设,支持全双工通信,可以同时...
此外,如果需要实时响应,还可以结合DMA(Direct Memory Access)来自动传输数据,减少CPU的负担。在STM32中,可以配置DMA通道与DAC连接,自动将内存中的数据传输到DAC的数据寄存器,实现连续无中断的递增输出。 ...
1. **直接内存访问(Direct Memory Access)** Java中的NIO(New IO)库允许程序在堆外分配内存,绕过Java内存管理,直接操作内存地址。通过`ByteBuffer`类,我们可以分配并访问直接内存,这通常用于高性能的数据交换...
DMA方式是指Direct Memory Access的缩写,即直接内存访问方式。它是一种高速的数据传输方式,CPU不需要参与数据传输过程,数据直接从外设传输到内存中。 通道方式是指一种专门用于输入/输出操作的处理器,负责管理...
3. **DMA与定时器结合**:STM32的DMA(Direct Memory Access)功能可以实现数据的自动传输,减轻CPU负担。结合定时器,可以在定时器中断时触发DMA更新GPIO状态,达到控制LED闪烁的目的。这样,即使在处理复杂任务时...
在FPGA设计中,实现PCI接口还需要设计DMA(Direct Memory Access,直接内存访问)控制器。DMA控制器允许外部设备直接访问系统内存,从而绕过CPU,减少了CPU介入数据传输的次数,提高了传输效率。在高速数据通信系统...
在本文中,我们将深入探讨如何使用STM32F407微控制器通过FSMC(Flexible Static Memory Controller)和DMA(Direct Memory Access)实现LED灰度扫描,以控制一个256×64像素、256灰度级别的全彩显示屏,并达到200Hz...
计算机组成原理的第八章第四讲中,我们讨论了DMA(Direct Memory Access)方式,它是一种高效的数据传输方式,用于在主存储器和I/O设备之间进行高速数据传输。 DMA方式是一种硬件控制的数据传输方式,它可以让CPU从...
ADC(Analog-to-Digital Converter)是将模拟信号转换为数字信号的设备,而DMA(Direct Memory Access)是一种高速数据传输方式,可以减少CPU的参与,从而提高系统的效率。 STM32的ADC采样 在STM32单片机中,ADC是...
对于某些需要极高数据传输速率的应用场景,可以利用高性能微控制器的高速串口DMA(Direct Memory Access)功能来实现数据通讯。例如,使用意法半导体的STM32F429芯片时,可以通过配置USART3端口参数实现2.5M波特率的...
本文将深入探讨如何使用DMA(Direct Memory Access,直接存储器访问)方式来实现STM32单片机的串口数据发送。STM32系列微控制器以其高性能、低功耗和丰富的外设接口而受到广泛应用,其中STM32F030C8T6是STM32家族中...
IDMA (Interrupt Direct Memory Access) 中断直接内存访问(IDMA)允许数据直接从摄像头传感器传输到内存,无需CPU干预,从而显著提高传输效率。 ##### 10. IPU (Image Processing Unit) 图像处理单元(IPU)负责...
5. **DMA(Direct Memory Access)**:DM9000A支持DMA方式传输数据,可以直接与系统内存交换数据,减轻CPU负担。在Verilog设计中,需要考虑如何设置DMA传输模式和配置相关寄存器。 6. **中断处理**:DM9000A芯片有...
在本示例中,我们关注的是如何利用串口(USART)的空闲中断和DMA(Direct Memory Access)功能来实现Modbus通信,这是一种在工业自动化领域广泛应用的通信协议。 首先,我们要理解串口通信的基本概念。串口通信是一...
书中会介绍字符设备、块设备驱动的编写,以及中断处理和DMA(Direct Memory Access)等技术。 5. **网络协议栈**:Linux内核实现了完整的TCP/IP协议栈,包括网络接口层、网络层、传输层和应用层。讲解了IP、TCP、...
它可以读取和写入CAN消息,并通过中断或DMA(Direct Memory Access)与FPGA中的CAN控制器进行交互。Nios_II软件开发通常基于Qsys系统构建工具和Quartus II IDE,使用C或C++编写应用程序,并通过硬件描述语言(如...