为什么会出现java.lang.OutOfMemoryError异常?

rcrain 2005-11-26 03:26:26
为什么会出现java.lang.OutOfMemoryError异常? 一般都什么情况下会出现?我就是对数据库进行操作(处理一个表中的数据,对其统计,再把统计的结果保存到另一个表中,需要频繁的数据库操作),在运行的时候,给出一个提示:说正在处理数据。在程序运行一段时间之后,控制台提示:java.lang.OutOfMemoryError
对于这个错误,应该如何解决。
...全文
315 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinatelly 2005-12-17
  • 打赏
  • 举报
回复
要把程序的算法改进一下,要考虑较少的占用系统资源。对于数据库的操作,可以转换一下方法,先放在内存中运算,最后来一个批处理更新数据库
Octer 2005-11-26
  • 打赏
  • 举报
回复
当然也可以考虑对数据库作一下优化
Octer 2005-11-26
  • 打赏
  • 举报
回复
建议优化你的查询,提高你的程序效率
jinxfei 2005-11-26
  • 打赏
  • 举报
回复
你应该改变你的算法,让这个统计工作在数据库中进行,而不是拿到内存中处理。
网络精灵 2005-11-26
  • 打赏
  • 举报
回复
处理一个表中的数据,对其统计,再把统计的结果保存到另一个表中,需要频繁的数据库操作,多少?
不会吧,这种错误网上一搜很多的,搜一下吧,这是其中之一。
環境:Windows server 2000+weblogic server 8.1

因最近剛入門學習java及weblogic server的技術,
發現在網頁讀取資料庫的內容時web server出現 java.lang.OutofMemoryError 的錯誤訊息,到BEA的網站查詢到技術文件,找到發生outofmemoryerror的大致原因及解決方案==> 建議將通過java命令行中的-Xms,-Xmx的指定將最小值和最大值設成一樣....請教要修改的是jvm檔內的xms,xmx還是weblogic server內的xms,xmx,另外,而這些檔名及路徑又是為何?
-------------------------------------
修改 d:\bea\weblogic81\common\bin\commEnv.cmd

:bea if "%PRODUCTION_MODE%" == "true" goto bea_prod_mode
set JAVA_VM=-jrockit
set MEM_ARGS=-Xms128m -Xmx256m
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xverify:none
goto continue
:bea_prod_mode
set JAVA_VM=-jrockit
set MEM_ARGS=-Xms128m -Xmx256m
goto continue

改成 -Xms512m -Xmx1024m

試試看吧
tsylo 2005-11-26
  • 打赏
  • 举报
回复
对象存储量过大
java虚拟机为java分配了一部分内存
当你一个对象过大,超过了jvm给你分配的内存后就会出现这个错误
譬如你定义一个容器类对象,vector对象,或者arraylist对象,你
不断的往里面存储东西,而每次存储完毕后,虚拟机又没有来得及
进行垃圾回收,于是就出现了这个错误,解决方法你可以找到这个
过大的对象,用try catch把它包起来,当发现对象过大的时候就抓
住异常,并且把这个对象设成空。

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧