`
flychao88
  • 浏览: 753346 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

【转】SharedHashMap是更低延迟无GC暂停的Map实现

 
阅读更多

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);
	}

 

在另外一篇java.util.concurrent.ConcurrentHashMap VS openhft.collections.SharedHashMap对比中,SharedHashMap提供了比ConcurrentHashMap出色高性能,
特别是无GC暂停。

分享到:
评论

相关推荐

    openjdk jvm zgc低延迟

    OpenJDK JVM 的 ZGC(Z Garbage Collector)是一个针对低延迟需求设计的垃圾收集器。这个GC的主要目标是提供可扩展的低延迟...它通过一系列创新技术,实现了高效、低延迟的内存管理,为开发者提供了更优质的运行环境。

    Go-一个用go实现的零GC延迟高并发支持的缓存系统freecache

    标题中的“Go-一个用go实现的零GC延迟高并发支持的缓存系统freecache”指的是使用Go语言编写的freecache库,这个库设计的目标是实现无垃圾收集(GC)延迟,并能高效地支持高并发场景。在Go语言中,垃圾收集是自动...

    高吞吐低延迟Java应用的垃圾回收优化.docx

    高吞吐低延迟Java应用的垃圾回收优化 高吞吐低延迟Java应用的垃圾回收优化是现代网络的关键组件。...通过理解GC基础知识、仔细考量GC需求、理解GC指标优化等步骤,可以实现高吞吐低延迟的Java应用程序。

    什么是GC,GC是什么意思为什么要有GC

    * 不适合实时系统:GC机制不适合实时系统,因为它可能会导致系统暂停和延迟。 .NET中的GC 在.NET Framework中,GC机制是公共语言运行库的一部分,它可以自动追踪和回收不再使用的对象,释放内存资源。.NET中的GC...

    JvmGC收集器

    Concurrent Mark-and-Sweep GC 是一种低延迟的 GC 收集器,它可以并发执行 GC 操作,从而减少应用程序的暂停时间。这种 GC 适合需要低延迟和高吞吐量的应用程序。 GC 性能指标 GC 的性能主要由两个指标衡量:...

    gcviewer-1.33

    - **GC暂停时间**:长时间的GC暂停可能导致应用响应延迟,影响用户体验。 - **新生代和老年代的大小变化**:观察内存分配和晋升的规律,判断是否需要调整堆大小。 - **对象分配速率**:过高可能意味着内存泄漏或者...

    GCViewer,Tagtraum Industries的GCviewer之叉。tagtraum在2008年停止了开发,我的目标是改进对sun/oracle的java 1.6+垃圾收集器日志(包括g1收集器)的支持。.zip

    1. **GC暂停时间**:长时间的GC暂停可能会影响应用的响应速度,尤其是对于低延迟的应用。 2. **新生代和老年代的内存分配**:这有助于识别对象的生命周期和内存泄漏。 3. **GC频率**:频繁的GC可能是内存管理不当...

    gc-map:gc-map是一个可嵌入JavaScriptHTML小部件,用于可视化来自geocledian.com的ag |知识REST API的输出

    gc-map小部件v2 描述 gc-map是一个可嵌入JavaScript / HTML小部件,用于可视化来自知识REST API的。 它被构建为可重用的组件,从而可以顺利集成到应用程序中。 您可以但不必用构建其余的容器应用程序。 目的 使用此...

    gc2093 datasheet

    GC2093 是一款 1/2.9 英寸的 2 百万像素 CMOS 图像传感器,具备高质量图像采集和低功耗特点。下面是 GC2093 datasheet 的详细知识点总结: 1. Sensor Overview GC2093 是一款 1/2.9 英寸的 2 百万像素 CMOS 图像...

    jvm gc

    7. **垃圾收集器组合**:JDK 11引入了ZGC(Z Garbage Collector),这是一种低延迟的GC,目标是在大堆上实现几乎无暂停时间的垃圾收集。JDK 14引入了Epsilon GC,它是一个无操作的GC,用于测试和基准测试。 8. **元...

    visualgc插件离线安装包

    《VisualGC插件:JVM监控的得力助手》 在Java开发中,对JVM(Java虚拟机)的监控是至关重要的,它可以帮助我们理解...在日常开发和运维工作中,我们应该充分利用这类工具,以实现更高效、更稳定的Java应用程序运行。

    java垃圾回收(gc)机制详解

    5. ZGC:最新一代的低延迟GC,目标是在大内存环境下实现极低的暂停时间。 四、垃圾回收的过程 GC主要包括三个阶段:标记、筛选和清理。 1. 标记:找出所有可达对象,标记它们。 2. 筛选:确定哪些区域需要清理,...

    图纸转换工具GC2000是一款超强悍的GERBER文件查看软件

    随着技术的发展,GC2000可能包含更先进的功能,如3D渲染、自动布线检查、元器件库管理等,以满足不断进化的PCB设计需求。 总的来说,GC2000作为一款专业的图纸转换工具,它的功能强大,涵盖了GERBER文件的查看、...

    gc2145 datasheet

    GC2145 CMOS图像传感器数据手册 GC2145是一种1/5英寸的UXGA CMOS图像传感器,用于图像采集和处理应用场景。下面是GC2145数据手册的详细解读: Sensor Overview GC2145是一种高性能的CMOS图像传感器,具有高分辨率...

    gc4023 datasheet

    GC4023 CMOS图像传感器数据手册 GC4023是一款高性能的CMOS图像传感器,用于capturing高质量图像。该传感器具有1/2.7英寸的感光面积、4Mega像素的高分辨率和低噪音的特点。该传感器的datasheet提供了详细的技术规格...

    Java GC的过程

    5. G1 GC:新一代的垃圾收集器,目标是实现低延迟,适用于大型Java应用。 四、GC过程 1. 初始标记:快速扫描根对象,标记直接可达的对象。 2. 并发标记:在应用程序运行的同时进行,标记所有可达的对象。 3. 最终...

Global site tag (gtag.js) - Google Analytics