3
0
mirror of https://github.com/Qortal/altcoinj.git synced 2025-02-07 14:54:15 +00:00

Make MemoryBlockStore store only a rolling window of the last 5000 blocks. Fixes BuildCheckpoints which was trying to store every block header and running out of heap space.

This commit is contained in:
Mike Hearn 2013-09-15 18:09:20 +02:00
parent 3ea3735d4f
commit 2ccfd3fd48

View File

@ -18,18 +18,22 @@ package com.google.bitcoin.store;
import com.google.bitcoin.core.*;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
/**
* Keeps {@link com.google.bitcoin.core.StoredBlock}s in memory. Used primarily for unit testing.
*/
public class MemoryBlockStore implements BlockStore {
private Map<Sha256Hash, StoredBlock> blockMap;
private LinkedHashMap<Sha256Hash, StoredBlock> blockMap = new LinkedHashMap<Sha256Hash, StoredBlock>() {
@Override
protected boolean removeEldestEntry(Map.Entry<Sha256Hash, StoredBlock> eldest) {
return blockMap.size() > 5000;
}
};
private StoredBlock chainHead;
public MemoryBlockStore(NetworkParameters params) {
blockMap = new HashMap<Sha256Hash, StoredBlock>();
// Insert the genesis block.
try {
Block genesisHeader = params.getGenesisBlock().cloneAsHeader();