Accordion arrays: Selective compression of unicode arrays in java

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

In this work, we present accordion arrays, a straight-forward and effective memory compression technique targeting Unicode-based character arrays. In many non-numeric Java programs, character arrays represent a significant fraction (30-40% on average) of the heap memory allocated. In many locales, most, but not all, of those arrays consist entirely of characters whose top bytes are zeros, and, hence, can be stored as byte arrays without loss of information. In order to get the almost factor of two compression rate for character vectors, two challenges must be overcome: 1) all code that reads and writes character vectors must dynamically determine which kind of array is being accessed and perform byte or character loads/stores as appropriate, and 2) compressed vectors must be dynamically inflated when an incompressible character is written. We demonstrate how these challenges can be overcome with minimal space and execution time overhead, resulting in an average speedup of 2% across our benchmark suite, with individual speedups as high as 8%.

Original languageEnglish (US)
Title of host publicationISMM'07
Subtitle of host publicationProceedings of the 2007 International Symposium on Memory Management
Pages55-66
Number of pages12
DOIs
StatePublished - 2007
EventISMM'07: 2007 International Symposium on Memory Management - Montreal, QC, Canada
Duration: Oct 21 2007Oct 22 2007

Publication series

NameInternational Symposium on Memory Management, ISMM

Conference

ConferenceISMM'07: 2007 International Symposium on Memory Management
Country/TerritoryCanada
CityMontreal, QC
Period10/21/0710/22/07

Keywords

  • Array
  • Character
  • Compression
  • Java
  • Memory management
  • Polymorphism
  • Unicode

ASJC Scopus subject areas

  • Engineering(all)

Fingerprint

Dive into the research topics of 'Accordion arrays: Selective compression of unicode arrays in java'. Together they form a unique fingerprint.

Cite this