Skip to content

Commit

Permalink
Update tuning.md
Browse files Browse the repository at this point in the history
http://stackoverflow.com/questions/9699071/what-is-the-javas-internal-represention-for-string-modified-utf-8-utf-16

Author: Andrew Ash <[email protected]>

Closes mesos#384 from ash211/patch-2 and squashes the following commits:

da1b0be [Andrew Ash] Update tuning.md
  • Loading branch information
ash211 authored and rxin committed Apr 10, 2014
1 parent 7b52b66 commit f046662
Showing 1 changed file with 3 additions and 2 deletions.
5 changes: 3 additions & 2 deletions docs/tuning.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 90,10 @@ than the "raw" data inside their fields. This is due to several reasons:
* Each distinct Java object has an "object header", which is about 16 bytes and contains information
such as a pointer to its class. For an object with very little data in it (say one `Int` field), this
can be bigger than the data.
* Java Strings have about 40 bytes of overhead over the raw string data (since they store it in an
* Java `String`s have about 40 bytes of overhead over the raw string data (since they store it in an
array of `Char`s and keep extra data such as the length), and store each character
as *two* bytes due to Unicode. Thus a 10-character string can easily consume 60 bytes.
as *two* bytes due to `String`'s internal usage of UTF-16 encoding. Thus a 10-character string can
easily consume 60 bytes.
* Common collection classes, such as `HashMap` and `LinkedList`, use linked data structures, where
there is a "wrapper" object for each entry (e.g. `Map.Entry`). This object not only has a header,
but also pointers (typically 8 bytes each) to the next object in the list.
Expand Down

0 comments on commit f046662

Please sign in to comment.