user30136: What are differences between MemoryBlockStore and SPVBlockStore in bitcoinj?
Which should be used for downloading the blockchain and why?
Can I use same SPVChain format file for all wallets?

user77039: MemoryBlockStore keeps StoredBlocks in memory and it is used primarily for unit testing. 
Whereas SPVBlockStore holds a limited number of block headers in a memory mapped ring buffer. With such a store, you may not be able to process very deep re-orgs and could be disconnected from the chain (requiring a replay), but as they are virtually unheard of this is not a significant risk.
You can find the reference document from the following link:
MemoryBlockStore
https://bitcoinj.github.io/javadoc/0.12/org/bitcoinj/store/MemoryBlockStore.html
SPVBlockStore
https://bitcoinj.github.io/javadoc/0.12/org/bitcoinj/store/SPVBlockStore.html

30136: <p>What are differences between MemoryBlockStore and SPVBlockStore in bitcoinj?</p>

<p>Which should be used for downloading the blockchain and why?</p>

<p>Can I use same SPVChain format file for all wallets?</p>
 77039: <p><strong><em>MemoryBlockStore</em></strong> keeps StoredBlocks in memory and it is used primarily for unit testing. </p>

<p>Whereas <strong><em>SPVBlockStore</em></strong> holds a limited number of block headers in a memory mapped ring buffer. With such a store, you may not be able to process very deep re-orgs and could be disconnected from the chain (requiring a replay), but as they are virtually unheard of this is not a significant risk.
You can find the reference document from the following link:</p>

<p>MemoryBlockStore
<a href="https://bitcoinj.github.io/javadoc/0.12/org/bitcoinj/store/MemoryBlockStore.html" rel="nofollow noreferrer">https://bitcoinj.github.io/javadoc/0.12/org/bitcoinj/store/MemoryBlockStore.html</a></p>

<p>SPVBlockStore
<a href="https://bitcoinj.github.io/javadoc/0.12/org/bitcoinj/store/SPVBlockStore.html" rel="nofollow noreferrer">https://bitcoinj.github.io/javadoc/0.12/org/bitcoinj/store/SPVBlockStore.html</a></p>
