今天给各位分享java数据库内存的知识,其中也会对JAVA内存进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
1、什么是基于Java的内存数据库2、Java如何创建bdb内存数据库3、java程序中数据的储存方法有哪些?4、JAVA查询数据库出现内存溢出5、java应用程序数据库内存泄露是什么原因导致的啊!6、java如何将从数据库取出的数据预先存入到内存?
什么是基于Java的内存数据库
一句话:Heap 内存中没有足够的可用内存了。这句话要好好理解,不是说Heap 没有内存
了,是说新申请内存的对象大于Heap 空闲内存,比如现在Heap 还空闲1M,但是新申请的内存需
要1.1M,于是就会报OutOfMemory 了,可能以后的对象申请的内存都只要0.9M,于是就只出现
一次OutOfMemory,GC 也正常了,看起来像偶发事件,就是这么回事。但如果此时GC 没有回
收就会产生挂起情况,系统不响应了。
Java如何创建bdb内存数据库
(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。
java程序中数据的储存方法有哪些?
java程序中数据储存方法如下:
一种是栈内存,另一种是堆内存
(1)在函数中定义的基本类型变量(即基本类型的局部变量)和对象的引用变量(即对象的变量名)都在函数的栈内存中分配;
(2)堆内存用来存放由new创建的对象和数组以及对象的实例变量(即全局变量)。
在函数(代码块)中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量所分配的内存空间;
在堆中分配的内存由java虚拟机的自动垃圾回收器来管理
堆和栈的优缺点
堆的优势是可以动态分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的。
缺点就是要在运行时动态分配内存,存取速度较慢;
栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。
JAVA查询数据库出现内存溢出
读取的时候内存不足了,你可以增大myeclipse的内存,在myeclise.ini里面,调大各个属性,然后你读取的时候存对象里后,通过byte字节来操作,用缓冲流,写入到磁盘中。
java应用程序数据库内存泄露是什么原因导致的啊!
不知道楼主问这个问题是想了解这个原因还是解决这个问题,还是都回答了吧。
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等。
希望对你有所帮助,具体可以参考。
java如何将从数据库取出的数据预先存入到内存?
你要实现的这个可能跟SpringMvc的关系不是很大。
你要达到的目的其实就是在jvm启动的时候把数据库数据加载一份到内存,一个静态变量和一个静态初始化块就可以搞定你的问题,这两者都是在类加载的时候初始化一次,像前面回答的一样,你可以用一个HashMap搞定。稍微具体来说,一个静态变量
public static final Mapkey,value cache=new HashMapkey,value()
static {
cache=请求数据库操作
}
key你自己加,String还是int都行,value是你数据库的结构,可以写个实体。获取的时候直接cache.get(key)就可以了。
java如何从数据库读取数据并写入txt文件:
将数据查询出来放在list中,然后写入文件。
给你个写入的类,查询数据自己如果能搞定最好了。
FileWriter fileWriter=new FileWriter(“c:\\Result.txt”);
int [] a=new int[]{11112,222,333,444,555,666};
for (int i = 0; i a.length; i++) {
fileWriter.write(String.valueOf(a[i])+” “);
}
fileWriter.flush();
fileWriter.close();
上面例子中的a也可以是list。
java数据库内存的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于JAVA内存、java数据库内存的信息别忘了在本站进行查找喔。