mirror of
				https://github.com/Qortal/altcoinj.git
				synced 2025-11-03 05:57:21 +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:
		
				
					committed by
					
						
						Andreas Schildbach
					
				
			
			
				
	
			
			
			
						parent
						
							b883d88468
						
					
				
				
					commit
					0d9f8b7867
				
			@@ -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();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user