返回
HeapBuffers: Why Not Just Using a Binary Serialization Format for Your Managed Memory?
DOI:10.1145/3763175.png)
摘要
En 中文
在现代云应用中,数据序列化与反序列化(DSD)是常见但开销较大的操作。Java等语言因采用托管内存,其DSD操作会产生显著开销,这是因为它们使用一种与I/O不兼容、稀疏且平台相关的数据布局来存储对象。语言虚拟机(VM)能否通过直接操作IO就绪的二进制格式来绕过昂贵的DSD操作?本文通过提出一种名为HeapBuffers的新型Java DSD库来解答这一问题。HeapBuffers通过托管内存维持Java友好的编程模型,但操作的是以密集、平台无关的内存格式存储的数据。通过这种方式,HeapBuffers数据可用于执行IO操作,而无需将对象从VM内部内存表示转换或转换回来,从而消除了昂贵DSD操作的需求。编译器优化与专用垃圾回收相结合,确保访问HeapBuffers数据的效率几乎与处理常规Java对象相当。我们问题的答案在很大程度上是肯定的:实验表明,HeapBuffers数据可以高效访问,并能直接用于执行IO操作,使DSD的成本实际上可忽略不计。使用HeapBuffers的应用程序的IO性能通常比使用现有主流DSD库的应用快几个数量级。
Keyword:
Data serialization and deserialization
Managed language runtimes
Garbage collection
FlatBuffers
期刊
P
IF:
2.8
论文数:
308
被引数:
4.7K

