Java 使用堆外内存(off-heap memory) 作为缓存

devtools/2024/11/28 11:34:44/

我们通常用的 Java 缓存基本可认为是扩展了 HashMap 或 ConcurrentHashMap 的实现,它们各自实现自己的缓存策略,如时间与空间的控制,生命周期管理,是否支持分布式,溢出时能否转储到磁盘。关于 Java 本地缓存的存储分为内存与磁盘,内存多数情况下指的是堆内内存(on-heap), 而介于堆内内存与文件存储之间的就是堆外内存(off-heap)

  1. 堆内存储(on-heap): 操作最快,无需序列化,但大量数据时会影响到 GC 的效率
  2. 堆外存储(off-heap): 存储在 Java 进程内存但非 JVM 堆内(不在 -Xmx 指定的内存范围内),使用或保存时需进行序列化/反序列化过程(在堆内与堆外转换),但不受 GC 影响,有助于提它来 GC 的效率
  3. 文件存储:不仅存在序列化与反序列化过程,还带 IO 操作,所以最慢,唯一优点就是大

我们查看一下当前 Spring 支持的缓存实现, Supported Cache Providers, 列有 Generic, JCache(JSR-107), EhCache 2.x, Hazelcast, Infinispan, Couchbase, Redis, Caffeine, Simple, 这其中无一支持堆外缓存,其中的 EhCache 要付费使用 EhCache 3(Big Memory) 才能支持 off-heap。 阅读全文 >>


http://www.ppmy.cn/devtools/137652.html

相关文章

【MATLAB源码-第228期】基于matlab的鼠群优化算法(RSO)无人机三维路径规划,输出做短路径图和适应度曲线.

操作环境: MATLAB 2022a 1、算法描述 鼠群优化算法(Rat Swarm Optimization, RSO) 简介 鼠群优化算法(Rat Swarm Optimization, RSO)是一种模仿鼠类群体觅食行为的优化算法。该算法属于群体智能算法,通过…

基于Graph Convolutional Networks (GCN)的知识图谱嵌入详解

在众多的嵌入方法中,基于图神经网络(Graph Neural Networks, GNN)的嵌入方法近年来备受瞩目。其中,图卷积网络(Graph Convolutional Networks, GCN)通过捕捉图中节点的邻域信息,能够有效学习节点…

为什么神经网络的可解释性差?

神经网络的可解释性问题是一个复杂的话题,涉及到多个因素。确实,神经网络中的权重和偏置是影响可解释性的因素之一,但还有其他几个关键因素也对神经网络的可解释性产生了影响。以下是一些主要原因: 权重和偏置的复杂性&#xff1…

next build报错bash: next: command not found

相关背景:我有个next.js项目(第一次使用next.js框架),想构建一下,发现报错了,没有该命令。 (ps:我测试用的是:yarn dev) 然后我用everything全局搜了下 next…

java对象什么时候被垃圾回收?

简单一句就是:如果一个或多个对象没有任何的引用指向它了,那么这个对象现在就是垃圾,如果定位了垃圾,则有可能会被垃圾回收器回收。 如果要定位什么是垃圾,有两种方式来确定,第一个是引用计数法,第二个是可…

如何做好一份技术文档?

打造出色技术文档的艺术 在当今技术驱动的世界中,技术文档扮演着至关重要的角色。它不仅是工程师和开发人员之间交流的桥梁,更是产品和技术成功的隐形推手。一份优秀的技术文档宛如一张精准的航海图,能够引导读者穿越技术的迷雾,…

项目缓存之Caffeine咖啡因

文章目录 理论使用 理论 🍎缓存缓存是提升系统性能的一个不可或缺的工具,通过缓存可以避免大部分重复的请求到数据库层,减少IO链接次数,进而提升整体的响应速率;缓存工具可以分为本地缓存(如Caffeine&…

小米C++ 面试题及参考答案下(120道面试题覆盖各种类型八股文)

指针和引用的区别?怎么实现的? 指针和引用有以下一些主要区别。 从概念上来说,指针是一个变量,它存储的是另一个变量的地址。可以通过指针来间接访问所指向的变量。例如,我们定义一个整型指针int *p;,它可以指向一个整型变量的内存地址。而引用是一个别名,它必须在定义的…