SharedHashMap是开源工具OpenHFT一个子项目,SharedHashMap提供ConcurrentHashMap更低延迟无JVM的GC暂停的实现。两个特点是:
1.所有元素都保存在Java heap之外,这样就不受GC影响,没有GC暂停。
2.所有元素都在一个共享内存区域,对所有进程都是可视的。
SharedHashMap采取的是"no-copy"模型,能够提供off-heap堆内存之外内存空间,让应用程序获得更低延迟更快性能。
它不是普通HashMap,而是一个特殊的,只有在你特殊需要时才使用,如果你想使用JVM堆之外内存可以使用它,如果想持久化Map中项目,也可以使用,特别是你想使用一个大的共享Map时。
使用代码:
SharedHashMapBuilder builder = new SharedHashMapBuilder(); String shmPath = System.getProperty("java.io.tmpdir") + System.getProperty("file.separator") + "SHMTest1"; //Declare as a ConcurrentMap rather than Map if you want to use putIfAbsent() Map<String, SHMTest1Data> theSharedMap = builder.create(new File(shmPath), String.class, SHMTest1Data.class)
其中SHMTest1Data类是一个简单的数组实现。代码如下:
public static class SHMTest1Data implements Serializable { private long[] time; public SHMTest1Data(int maxNumberOfProcessesAllowed) { this.time = new long[maxNumberOfProcessesAllowed]; } public int getMaxNumberOfProcessesAllowed() { return this.time.length; } public void setTimeAt(int index, long time) { this.time[index] = time; } public long getTimeAt(int index) { return this.time[index]; } }
使用代码如下:
SHMTest1Data data = theSharedMap.get("whatever"); if (data == null) { //From 1.8, we could use putIfAbsent() as that's been added to the Map interface.//Alternatively we can cast to SharedHashMap and use putIfAbsent().//But for this test just bang it in, doesn't matter if something//else gets in first as you'll see below data = new SHMTest1Data(2); theSharedMap.put("whatever", data); }
相关推荐
OpenJDK JVM 的 ZGC(Z Garbage Collector)是一个针对低延迟需求设计的垃圾收集器。这个GC的主要目标是提供可扩展的低延迟...它通过一系列创新技术,实现了高效、低延迟的内存管理,为开发者提供了更优质的运行环境。
标题中的“Go-一个用go实现的零GC延迟高并发支持的缓存系统freecache”指的是使用Go语言编写的freecache库,这个库设计的目标是实现无垃圾收集(GC)延迟,并能高效地支持高并发场景。在Go语言中,垃圾收集是自动...
高吞吐低延迟Java应用的垃圾回收优化 高吞吐低延迟Java应用的垃圾回收优化是现代网络的关键组件。...通过理解GC基础知识、仔细考量GC需求、理解GC指标优化等步骤,可以实现高吞吐低延迟的Java应用程序。
* 不适合实时系统:GC机制不适合实时系统,因为它可能会导致系统暂停和延迟。 .NET中的GC 在.NET Framework中,GC机制是公共语言运行库的一部分,它可以自动追踪和回收不再使用的对象,释放内存资源。.NET中的GC...
Concurrent Mark-and-Sweep GC 是一种低延迟的 GC 收集器,它可以并发执行 GC 操作,从而减少应用程序的暂停时间。这种 GC 适合需要低延迟和高吞吐量的应用程序。 GC 性能指标 GC 的性能主要由两个指标衡量:...
- **GC暂停时间**:长时间的GC暂停可能导致应用响应延迟,影响用户体验。 - **新生代和老年代的大小变化**:观察内存分配和晋升的规律,判断是否需要调整堆大小。 - **对象分配速率**:过高可能意味着内存泄漏或者...
1. **GC暂停时间**:长时间的GC暂停可能会影响应用的响应速度,尤其是对于低延迟的应用。 2. **新生代和老年代的内存分配**:这有助于识别对象的生命周期和内存泄漏。 3. **GC频率**:频繁的GC可能是内存管理不当...
gc-map小部件v2 描述 gc-map是一个可嵌入JavaScript / HTML小部件,用于可视化来自知识REST API的。 它被构建为可重用的组件,从而可以顺利集成到应用程序中。 您可以但不必用构建其余的容器应用程序。 目的 使用此...
GC2093 是一款 1/2.9 英寸的 2 百万像素 CMOS 图像传感器,具备高质量图像采集和低功耗特点。下面是 GC2093 datasheet 的详细知识点总结: 1. Sensor Overview GC2093 是一款 1/2.9 英寸的 2 百万像素 CMOS 图像...
7. **垃圾收集器组合**:JDK 11引入了ZGC(Z Garbage Collector),这是一种低延迟的GC,目标是在大堆上实现几乎无暂停时间的垃圾收集。JDK 14引入了Epsilon GC,它是一个无操作的GC,用于测试和基准测试。 8. **元...
《VisualGC插件:JVM监控的得力助手》 在Java开发中,对JVM(Java虚拟机)的监控是至关重要的,它可以帮助我们理解...在日常开发和运维工作中,我们应该充分利用这类工具,以实现更高效、更稳定的Java应用程序运行。
5. ZGC:最新一代的低延迟GC,目标是在大内存环境下实现极低的暂停时间。 四、垃圾回收的过程 GC主要包括三个阶段:标记、筛选和清理。 1. 标记:找出所有可达对象,标记它们。 2. 筛选:确定哪些区域需要清理,...
随着技术的发展,GC2000可能包含更先进的功能,如3D渲染、自动布线检查、元器件库管理等,以满足不断进化的PCB设计需求。 总的来说,GC2000作为一款专业的图纸转换工具,它的功能强大,涵盖了GERBER文件的查看、...
GC2145 CMOS图像传感器数据手册 GC2145是一种1/5英寸的UXGA CMOS图像传感器,用于图像采集和处理应用场景。下面是GC2145数据手册的详细解读: Sensor Overview GC2145是一种高性能的CMOS图像传感器,具有高分辨率...
GC4023 CMOS图像传感器数据手册 GC4023是一款高性能的CMOS图像传感器,用于capturing高质量图像。该传感器具有1/2.7英寸的感光面积、4Mega像素的高分辨率和低噪音的特点。该传感器的datasheet提供了详细的技术规格...
5. G1 GC:新一代的垃圾收集器,目标是实现低延迟,适用于大型Java应用。 四、GC过程 1. 初始标记:快速扫描根对象,标记直接可达的对象。 2. 并发标记:在应用程序运行的同时进行,标记所有可达的对象。 3. 最终...