使用基元的编年史地图
Chronicle map using primitives
在Chronicle-map
描述中说:
Chronicle Map provides in-memory access speeds, and supports ultra-low garbage collection. Chronicle Map can support the most demanding of applications.
支持超低垃圾回收究竟代表什么?这是否意味着 Chronicle 地图会尝试在堆中分配尽可能少的对象?
据我所知,对延迟要求低的项目尽量避免不必要的分配,部分是通过使用 gc-free 集合,部分是通过对象池。其中之一是避免不必要的 boxing/unboxing 原语。例如,如果你有一个 Map<Long, Entity>
,为了避免创建 Long
对象,你可以使用基于值类型的映射实现,比如 trove
库中的 TLongObjectMap<Value>
。
那么以这种方式创建 chronicle-map
实例是有意义的,例如,使用基元作为键。可能吗?如果没有,是否有任何不实施的原因?
是的,这可以使用 ChronicleMap
而无需在热路径上进行单个分配(即垃圾)。如果您有原始键(或值),则应使用本教程中 Chronicle Values library. See Value interfaces instead of boxed primitives 部分提供的享元模式。
在Chronicle-map
描述中说:
Chronicle Map provides in-memory access speeds, and supports ultra-low garbage collection. Chronicle Map can support the most demanding of applications.
支持超低垃圾回收究竟代表什么?这是否意味着 Chronicle 地图会尝试在堆中分配尽可能少的对象?
据我所知,对延迟要求低的项目尽量避免不必要的分配,部分是通过使用 gc-free 集合,部分是通过对象池。其中之一是避免不必要的 boxing/unboxing 原语。例如,如果你有一个 Map<Long, Entity>
,为了避免创建 Long
对象,你可以使用基于值类型的映射实现,比如 trove
库中的 TLongObjectMap<Value>
。
那么以这种方式创建 chronicle-map
实例是有意义的,例如,使用基元作为键。可能吗?如果没有,是否有任何不实施的原因?
是的,这可以使用 ChronicleMap
而无需在热路径上进行单个分配(即垃圾)。如果您有原始键(或值),则应使用本教程中 Chronicle Values library. See Value interfaces instead of boxed primitives 部分提供的享元模式。