sto sviluppando una soluzione per essere molto più veloce, ma non vorrei suggerire lo si utilizza appena ancora come solo un proof of concept in questa fase.
http://vanillajava.blogspot.com/2011/09/new-contributors-to-hugecollections.html
Tuttavia, se si dispone di un requisito specifico, può essere più facile di codice da soli, utilizzare ByteBuffers diretti o file mappati in memoria.
ad es.
// using native order speeds access for values longer than a byte.
ByteBuffer bb = ByteBuffer.allocateDirect(1024*1024*1024).order(ByteOrder.nativeOrder());
// start at some location.
bb.position(0);
bb.put((byte) 1);
bb.putInt(myInt);
bb.putDouble(myDouble);
// to read back.
bb.position(0);
byte b = bb.get();
int i = bb.getInt();
double d = bb.getDouble();
Si può fare in modo simile per file mappati in memoria. I file mappati in memoria non contano per il limite di memoria diretta e non utilizzano lo spazio di swap.
Sei sicuro che BigMemory non farà il lavoro per te?
fonte
2011-10-10 05:59:07
La proposta è stata accettata. DirectMemory è sull'incubatore [Apache] (http://incubator.apache.org/directmemory/). – javanna
Quel progetto non ha avuto una lunga vita e ora è stato ritirato. –