Package org.h2.mvstore

# Class Chunk<C extends Chunk<C>>

java.lang.Object
org.h2.mvstore.Chunk<C>

Direct Known Subclasses:
  `SFChunk`

public abstract class Chunk<C extends Chunk<C>> extends Object
A chunk of data, containing one or multiple pages.

Minimum chunk size is usually 4096 bytes, and it grows in those fixed increments (blocks). Chunk's length and it's position in the underlying filestore are multiples of that increment (block size), therefore they both are measured in blocks, instead of bytes. There are at most 67 million (2^26) chunks, and each chunk is at most 2 GB large.

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static final class`
`Chunk.PositionComparator<C extends Chunk<C>>`

## Field Summary

Fields
Modifier and Type
Field
Description
`long`
`block`
The start block number within the file.
`ByteBuffer`
`buffer`
ByteBuffer holding this Chunk's serialized content before it gets saved to file store.
`final int`
`id`
The chunk id.
`int`
`len`
The length in number of blocks.
`int`
`mapId`
The last used map id.
`static final int`
`MAX_ID`
The maximum chunk id.
`long`
`maxLen`
The sum of the max length of all pages.
`long`
`maxLenLive`
The sum of the length of all pages that are still alive.
`long`
`next`
The predicted position of the next chunk.
`long`
`time`
When this chunk was created, in milliseconds since the store was created.
`long`
`unused`
When this chunk was no longer needed, in milliseconds after the store was created.
`long`
`version`
The version stored in this chunk.

## Method Summary

Modifier and Type
Method
Description
`final String`
`asString()`
Get the chunk metadata as a string to be stored in a layout map.
`protected void`
`dump(StringBuilder buff)`
`boolean`
`equals(Object o)`
`String`
`getHeader()`
`int`
`hashCode()`
`protected abstract ByteBuffer`
`readFully(FileStore<C> fileStore, long filePos, int length)`
`String`
`toString()`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

## Field Details

### MAX_ID

public static final int MAX_ID
The maximum chunk id.

See Also:
  - Constant Field Values

### id

public final int id
The chunk id.

### block

public volatile long block
The start block number within the file.

### len

public int len
The length in number of blocks.

### maxLen

public long maxLen
The sum of the max length of all pages.

### maxLenLive

public long maxLenLive
The sum of the length of all pages that are still alive.

### version

public long version
The version stored in this chunk.

### time

public long time
When this chunk was created, in milliseconds since the store was created.

### unused

public long unused
When this chunk was no longer needed, in milliseconds after the store was created. After this, the chunk is kept alive a bit longer (in case it is referenced in older versions).

### mapId

public int mapId
The last used map id.

### next

public long next
The predicted position of the next chunk.

### buffer

public volatile ByteBuffer buffer
ByteBuffer holding this Chunk's serialized content before it gets saved to file store. This allows to release pages of this Chunk earlier, allowing them to be garbage collected.

## Method Details

### readFully

protected abstract ByteBuffer readFully(FileStore<C> fileStore, long filePos, int length)

### hashCode

public int hashCode()

Overrides:
  `hashCode` in class `Object`

### equals

public boolean equals(Object o)

Overrides:
  `equals` in class `Object`

### asString

public final String asString()
Get the chunk metadata as a string to be stored in a layout map.

Returns:
  the string

### dump

protected void dump(StringBuilder buff)

### getHeader

public String getHeader()

### toString

public String toString()

Overrides:
  `toString` in class `Object`