java -Xmx 1000m 内存设定大点不过这始终不是好办法,最好能程序改改。。
解决方案 »
- FTP 多线程 同步
- java的几个基本问题,继承,多态,pass by value 并散分
- 求助,谢谢大家们 急需答案1!
- EL表达式中的问题
- Integer rval = (String)r;这句话不懂亦
- jexcel支持读写excel2003?
- 我用timer写了一个定时执行的类!但是这个类提示有错误,大家帮我看看什么原因引起的?
- 如何将一个有格式的文本转成图片?
- UTF是什么??
- 我想用 java + SqlServer 开发一个单机的学生管理系统,但是无从下手.大家帮帮我啊!
- 运行Java程序假死机问题?界面没有反应?
- 在JTree中设置TreeCellRenderer字体尺寸变大后,节点就显示不完整了,怎么办?
我感觉程序就象死机了一样,没响应了!
首先查询所有的主键,这个的数据量通常不是很大,就算主键为LONG类型,100万条记录,我们来计算一下需要多大的存储空间:8 bytes * 1,000,000 = 8,000,000 bytes。 8M而已。
你缓存所有的主键,然后采用步进的方式进行查询,每次2000条结果返回,直到所有的缓存的主键都查询完成就结束。
这样的做法是大大增加了你访问数据库的SELECT执行次数,但是实验可以证明通过唯一索引来访问数据库记录的性能损失是极低的。这点在通常情况下不会作为瓶颈出现。为了解决你的问题,这样的代价还是非常值得付出的。
如果你有一个缓冲区,当在抛出OutOfMemoryError的某处捕获它,并在错误处理中清空该缓冲区。
某些情况下,也可以这样实现。
如果你有一个缓冲区,当在抛出OutOfMemoryError的某处捕获它,并在错误处理中清空该缓冲区。
>>
I服了U了。
别笑我,作为某些应用或服务器设计是可以这样实现的,不要拒绝另一种思路嘛,我只针对OutOfMemoryError。
当然对于数据库应用,这样做并不合适,我认为你的建议就很好。 例:
try {
//循环处理arrayList.add(xxx);
} catch (OutOfMemoryError e) {
arrayList.clear();
}
呵呵,玩笑而已。别计较。
通常情况下俺是拒绝使用Exception来介入正常的流程控制的。
>>quot----------------------------------------------------
回复人: chesterwoo() ( ) 信誉:98 2003-11-21 16:27:00 得分:0
某些情况下,也可以这样实现。
如果你有一个缓冲区,当在抛出OutOfMemoryError的某处捕获它,并在错误处理中清空 该缓冲区。
>>-------------------------------------------------------
这里提到的方法应该行不通;OutOfMemoryError属于error,捕获error是没有意义的,应为在该情形下JVM要停机,根本不可能在抛出了一个error后再通过程序来恢复出错前的状态; 只能从预防该错误的角度来思考该问题。
一般来说捕获error是没有意义的,但并不是任何时候都不能使用。
OutOfMemoryError是Error,也是Throwable的一个子类,所以可以捕获。在网上应该可以找到示例代码。因为我们一般只捕获exception并不处理error,所以当出现error时,系统会崩溃。这种方法应该可以在服务器之类程序设计中出现。不过在这讨论有点离题。还是请大家关注主题吧。
文件,可以用多线程分段导,当然也的限制数据量。
如果是另一个数据库,ORACLE的imp exp命令比较好用
如果是页面显示的话,呵呵,不必一次线是这么多吧。