Hi,
I'm using JDBM to store several million records, essentially mappings
from a 10 byte array key to a 20 byte array value.. It seems that the
system runs out of memory after a little while. I created a small
testcase to demonstrate the issue, see below (where keys and values
were changed for longs). I run this with a max heap size of 32M to
illustrate the situation. If the keys are consecutive, the problem
doesn't appear (but that might just be for the first millions). A
heapdump shows that there are quite a few PhysicalRowId objects and
most of the memory (90%) is allocated to byte arrays.
I've tested this with the 1.0 version, as well as the latest from the SVN trunk.
Any ideas on this issue?
Kind regards,
Floris
import java.io.File;
import java.io.IOException;
import jdbm.RecordManager;
import jdbm.RecordManagerFactory;
import jdbm.btree.BTree;
import jdbm.helper.LongComparator;
import jdbm.helper.LongSerializer;
public class Main {
private static String FOLDER = "c:\\temp\\jdbm\\";
public static void main(String[] args) throws IOException{
for (File f : new File(FOLDER).listFiles()) f.delete();
RecordManager mgr = RecordManagerFactory.createRecordManager(FOLDER);
BTree tree = BTree.createInstance( mgr, new LongComparator(),
new LongSerializer(), new LongSerializer() );
mgr.setNamedObject( "test", tree.getRecid() );
for (long i =0; i < 2500000; i++) {
tree.insert((long)(Math.random()*1000000000), i, false);
if (i % 10000 == 0) mgr.commit();
}
}
}
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Jdbm-general mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jdbm-general