{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,10,10]],"date-time":"2025-10-10T01:19:32Z","timestamp":1760059172305,"version":"build-2065373602"},"reference-count":43,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA2","content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2025,10,9]]},"abstract":"<jats:p>In modern cloud applications, data serialization and deserialization (DSD) are common yet expensive operations. Languages such as Java incur significant overhead from DSD operations because of their managed memory, which uses an IO-incompatible, sparse, platform-dependent data layout for storing objects. Can language VMs bypass costly DSD operations by directly operating on an IO-ready binary format? In this paper, we address this question by presenting a new DSD library for Java called HeapBuffers. HeapBuffers maintains a Java-friendly programming model through managed memory, yet it operates on data stored using a dense, platform-independent, memory format. In this way, HeapBuffers data can be used to perform IO operations without the need to convert objects from\/to a VM-internal memory representation, thus eliminating the need for expensive DSD operations. Compiler optimizations combined with specialized garbage collection ensure that accessing HeapBuffers data is nearly as efficient as handling regular Java objects. The answer to our question is largely positive: our experiments show that HeapBuffers data can be accessed at high performance and can be used as is to perform IO, making the cost of DSD effectively negligible. IO performance of applications using HeapBuffers is often orders of magnitude faster than that obtained using the prevailing DSD libraries.<\/jats:p>","DOI":"10.1145\/3763175","type":"journal-article","created":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T08:49:50Z","timestamp":1759999790000},"page":"3483-3507","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":0,"title":["HeapBuffers: Why Not Just Using a Binary Serialization Format for Your Managed Memory?"],"prefix":"10.1145","volume":"9","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-7633-4224","authenticated-orcid":false,"given":"Daniele","family":"Bonetta","sequence":"first","affiliation":[{"name":"Vrije Universiteit Amsterdam, Amsterdam, Netherlands"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4824-4621","authenticated-orcid":false,"given":"J\u00fanior","family":"L\u00f6ff","sequence":"additional","affiliation":[{"name":"USI Lugano, Lugano, Switzerland"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-7219-9077","authenticated-orcid":false,"given":"Matteo","family":"Basso","sequence":"additional","affiliation":[{"name":"USI Lugano, Lugano, Switzerland"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2477-2182","authenticated-orcid":false,"given":"Walter","family":"Binder","sequence":"additional","affiliation":[{"name":"USI Lugano, Lugano, Switzerland"}]}],"member":"320","published-online":{"date-parts":[[2025,10,9]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Amazon Web Services. 2015. AWS Lambda: Run Code Without Thinking About Servers. https:\/\/aws.amazon.com\/lambda\/ Accessed: 2025-03-01"},{"key":"e_1_2_1_2_1","volume-title":"Apache Fury: A blazing-fast cross-language serialization framework powered by just-in-time compilation and zero-copy. https:\/\/fury.apache.org Accessed: 2025-03-01","author":"Foundation Apache Software","year":"2023","unstructured":"Apache Software Foundation. 2023. Apache Fury: A blazing-fast cross-language serialization framework powered by just-in-time compilation and zero-copy. https:\/\/fury.apache.org Accessed: 2025-03-01"},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1109\/GCAT55367.2022.9972158"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.14778\/3137765.3137782"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","unstructured":"Daniele Bonetta J\u00fanior L\u00f6ff Matteo Basso and Walter Binder. 2025. HeapBuffers: Why not just using a binary serialization format for your managed memory? (Artifact). https:\/\/doi.org\/10.5281\/zenodo.15751987 Accessed: 2025-08-01 10.5281\/zenodo.15751987","DOI":"10.5281\/zenodo.15751987"},{"key":"e_1_2_1_6_1","volume-title":"Hessian: Binary Web Service Protocol","author":"Technology Caucho","year":"2004","unstructured":"Caucho Technology. 2004. Hessian: Binary Web Service Protocol. http:\/\/hessian.caucho.com Accessed: 2025-03-01"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3533737.3535094"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/2408776.2408794"},{"key":"e_1_2_1_9_1","volume-title":"Kryo: A fast and efficient binary object graph serialization framework for Java. https:\/\/github.com\/EsotericSoftware\/kryo Accessed: 2025-03-01","author":"Software Esoteric","year":"2025","unstructured":"Esoteric Software. 2025. Kryo: A fast and efficient binary object graph serialization framework for Java. https:\/\/github.com\/EsotericSoftware\/kryo Accessed: 2025-03-01"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3623278.3624754"},{"key":"e_1_2_1_11_1","unstructured":"Google Inc. 2014. FlatBuffers Schema Language. https:\/\/google.github.io\/flatbuffers\/flatbuffers_guide_writing_schema.html Accessed: 2025-03-01"},{"key":"e_1_2_1_12_1","unstructured":"Google Inc. 2016. FlatBuffers: Memory Efficient Serialization. https:\/\/google.github.io\/flatbuffers\/ Accessed: 2025-03-01"},{"key":"e_1_2_1_13_1","unstructured":"Google Inc. 2017. Google Cloud Functions. https:\/\/cloud.google.com\/functions Accessed: 2025-03-01"},{"key":"e_1_2_1_14_1","volume-title":"Protocol Buffers: Google\u2019s Data Interchange Format. https:\/\/developers.google.com\/protocol-buffers Accessed: 2025-03-01","author":"Google Inc.","year":"2018","unstructured":"Google Inc. 2018. Protocol Buffers: Google\u2019s Data Interchange Format. https:\/\/developers.google.com\/protocol-buffers Accessed: 2025-03-01"},{"key":"e_1_2_1_15_1","unstructured":"Google Inc. 2025. FlatBuffers: A cross platform serialization library architected for maximum memory efficiency. https:\/\/github.com\/google\/flatbuffers Accessed: 2025-03-01"},{"key":"e_1_2_1_16_1","unstructured":"IEEE Standards Association. 2023. IEEE P802.3df\u2122 Defines Architecture Holistically to Achieve 800 Gb\/s and 1.6 Tb\/s Ethernet. https:\/\/standards.ieee.org\/ieee\/802.3df\/ Accessed: 2025-03-01"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1109\/ISCA45697.2020.00036"},{"key":"e_1_2_1_18_1","volume-title":"The Garbage Collection Handbook: The Art of Automatic Memory Management","author":"Jones Richard","year":"2008","unstructured":"Richard Jones, Antony Hosking, and Eliot Moss. 2011. The Garbage Collection Handbook: The Art of Automatic Memory Management. CRC Press, Boca Raton, FL. isbn:9781420082791"},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.1145\/2872887.2750392"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3466752.3480051"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/3652024.3665512"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1007\/s00778-019-00578-5"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/3620678.3624794"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.14778\/3115404.3115416"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/3503222.3507717"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/3627703.3629568"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/3173162.3173200"},{"key":"e_1_2_1_28_1","unstructured":"NVIDIA Corporation. 2023. ConnectX-7 Ethernet Datasheet. https:\/\/www.nvidia.com\/content\/dam\/en-zz\/Solutions\/networking\/ethernet-adapters\/connectx-7-datasheet-Final.pdf Accessed: 2025-03-01"},{"key":"e_1_2_1_29_1","unstructured":"Oracle Corporation. 2013. Java Microbenchmark Harness (JMH). https:\/\/openjdk.java.net\/projects\/code-tools\/jmh\/ Accessed: 2025-03-01"},{"key":"e_1_2_1_30_1","unstructured":"Oracle Corporation. 2014. JEP 254: Compact Strings. https:\/\/openjdk.org\/jeps\/254 Accessed: 2025-03-01"},{"key":"e_1_2_1_31_1","unstructured":"Oracle Corporation. 2019. GraalVM Native Image: Ahead-of-Time Compilation for Java. https:\/\/www.graalvm.org\/reference-manual\/native-image\/ Accessed: 2025-03-01"},{"key":"e_1_2_1_32_1","unstructured":"Oracle Corporation. 2023. Java Vectorized I\/O: Performance Enhancements for Input\/Output Operations. https:\/\/openjdk.org\/jeps\/384 Accessed: 2025-03-01"},{"key":"e_1_2_1_33_1","unstructured":"Oracle Corporation. 2023. JEP 409: Sealed Classes. https:\/\/openjdk.org\/jeps\/409 Accessed: 2025-03-01"},{"key":"e_1_2_1_34_1","unstructured":"Oracle Corporation. 2023. JEP 446: Scoped Values (Preview). https:\/\/openjdk.org\/jeps\/446 Accessed: 2025-03-01"},{"key":"e_1_2_1_35_1","unstructured":"Oracle Corporation. 2024. Direct ByteBuffer API Documentation. https:\/\/docs.oracle.com\/en\/java\/javase\/21\/docs\/api\/java.base\/java\/nio\/ByteBuffer.html##isDirect() Accessed: 2025-03-01"},{"key":"e_1_2_1_36_1","volume-title":"Project Valhalla: JVM Support for Value Types and Specialized Generics. https:\/\/openjdk.org\/projects\/valhalla\/ Accessed: 2025-03-01","author":"Oracle Corporation","year":"2024","unstructured":"Oracle Corporation. 2024. Project Valhalla: JVM Support for Value Types and Specialized Generics. https:\/\/openjdk.org\/projects\/valhalla\/ Accessed: 2025-03-01"},{"volume-title":"Protostuff: Protocol Buffers and Serialization Library for Java. https:\/\/github.com\/protostuff\/protostuff Accessed: 2025-03-01","year":"2011","key":"e_1_2_1_37_1","unstructured":"Protostuff. 2011. Protostuff: Protocol Buffers and Serialization Library for Java. https:\/\/github.com\/protostuff\/protostuff Accessed: 2025-03-01"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.1145\/3600006.3613137"},{"key":"e_1_2_1_39_1","unstructured":"Sandstorm Development Group. 2012. Cap\u2019n Proto. https:\/\/capnproto.org\/ Accessed: 2025-03-01"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.1145\/3373376.3378450"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/2581122.2544157"},{"key":"e_1_2_1_42_1","volume-title":"2021 USENIX Annual Technical Conference (USENIX ATC 21)","author":"Taranov Konstantin","year":"2021","unstructured":"Konstantin Taranov, Rodrigo Bruno, Gustavo Alonso, and Torsten Hoefler. 2021. Naos: Serialization-free $rdma$ networking in java. In 2021 USENIX Annual Technical Conference (USENIX ATC 21). 1\u201314."},{"key":"e_1_2_1_43_1","unstructured":"Juan Cruz Viotti and Mital Kinderkhedia. 2022. A survey of JSON-compatible binary serialization specifications. arXiv preprint arXiv:2201.02089."}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3763175","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T17:41:43Z","timestamp":1760031703000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3763175"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,10,9]]},"references-count":43,"journal-issue":{"issue":"OOPSLA2","published-print":{"date-parts":[[2025,10,9]]}},"alternative-id":["10.1145\/3763175"],"URL":"https:\/\/doi.org\/10.1145\/3763175","relation":{},"ISSN":["2475-1421"],"issn-type":[{"type":"electronic","value":"2475-1421"}],"subject":[],"published":{"date-parts":[[2025,10,9]]},"assertion":[{"value":"2025-03-25","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-08-12","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-10-09","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}