berkeley db中的数据结点com.sleepycat.je.tree.BIN占用了大量内存,导致内存溢出了。为了提高访问效率,berkeley db会缓存大量的结点,缓存大小限制可以在EnvironmentConfig设置,默认为jvm内存大小限制的60%。如果多个调用EnvironmentImpl使用时,这个内存值将会翻倍。将会出现不可估量的内存泄露问题。
因此在复杂工程应用用考虑缓存大小的合理性。
设置一个配置对象DatabaseConfig,用来配置一个数据库的环境,然后就可以创建Environment环境,可在此过程中设置数据库缓存大小。
EnvironmentConfig envConfig = newEnvironmentConfig(); // 创建一个EnvironmentConfig配置对象
envConfig.setAllowCreate(true); // 允许创建一个数据库环境
envConfig.setCacheSize(1000000); // 设置数据库缓存大小
因此在复杂工程应用用考虑缓存大小的合理性。
设置一个配置对象DatabaseConfig,用来配置一个数据库的环境,然后就可以创建Environment环境,可在此过程中设置数据库缓存大小。
EnvironmentConfig envConfig = newEnvironmentConfig(); // 创建一个EnvironmentConfig配置对象
envConfig.setAllowCreate(true); // 允许创建一个数据库环境
envConfig.setCacheSize(1000000); // 设置数据库缓存大小