Java如何创建bdb内存数据库

Python015

Java如何创建bdb内存数据库,第1张

(1)、Windows->Show View->Other…

(2)、选择Data Management->Data Source Explorer,点击OK。

创建Driver

(1)、Window->Preferences

(2)、选择Data Management->Driver Definitions

(3)、点击Add。在Name/Type标签页中,选择Generic JDBC Driver,并修改Driver name为:JDBC Driver。

在JAR List标签页中,加入h2-1.3.164.jar。

在Properties选项页中,配置如下信息:

Connection URL:jdbc:h2:E:\DataBase\yht(路径和文件名,可以自己设置)

Database Name:SAMPLE

Driver Class:org.h2.Driver

User ID:yht(数据库用户名,可以自己设置)

如下图所示:

一路OK返回开发环境。

创建Connections

(1)、File->New->Other…

(2)、选择Connection Profiles->Connection Profile。点击Next。

(3)、选择刚创建的Generic JDBC,并修改Name为:JDBC。点击Next。

(4)、输入密码。第一次输入的为密码,点击Test Connection,查看是否连接成功。

(5)、最后点击Finish:

运行sql脚本

(1)、在环境中打开sql脚本,选择创建的数据库,如下图。

(2)、右击sql文件,选择Execute All。

(3)、成功运行,如下图所示:

获取db格式文件

在路径E:\DataBase\下获取文件:yht.h2.db。

一句话:Heap 内存中没有足够的可用内存了。这句话要好好理解,不是说Heap 没有内存

了,是说新申请内存的对象大于Heap 空闲内存,比如现在Heap 还空闲1M,但是新申请的内存需

要1.1M,于是就会报OutOfMemory 了,可能以后的对象申请的内存都只要0.9M,于是就只出现

一次OutOfMemory,GC 也正常了,看起来像偶发事件,就是这么回事。但如果此时GC 没有回

收就会产生挂起情况,系统不响应了。

不知道楼主问这个问题是想了解这个原因还是解决这个问题,还是都回答了吧。

1.原因:

JAVA和C++等语言有个很大的区别,它有自己的GC(垃圾回收)机制,简单点描述就是所有无法可达的对象会被GC,这里无法可达是指该对象没有被程序任何活的部分所调用。所以从机制上健壮性较好的程序一般不和存在内存泄露。

但是一般不存在不代表不存在,在JAVA中内存泄露是指这样一些对象,它们是可达的,即有活动对象引用到他们,但是程序对这些对象没有任何使用。

举个例子:

Object O = new Object()[1]

A.a=O[2]

A.b=O[3]

a.c=O[4]

//处理过程

...

//处理结束,O没有用了

O=NULL[5]

在上面程序中,[1]~[4]过程都会给O这个对象的引用增加1,[5]这个过程会给O减少一个引用。也许程序员会觉得执行了[5]之后O会被GC,但实际上此时O还有3个引用([1]~[4]每个过程会给O增加一个引用,[5]会减少一个引用),不会被GC。此时产生了内存泄露。

2.解决

通常可以使用一些工具来检查内存泄露情况,并修改程序代码。常用工具包括:

opt profiler,JProbe profiler, Jinsight,Purify等。

希望对你有所帮助,具体可以参考http://wenku.baidu.com/view/707765fcc8d376eeaeaa3146.html。