为什么会出现java.lang.OutOfMemoryError异常? 一般都什么情况下会出现?我就是对数据库进行操作(处理一个表中的数据,对其统计,再把统计的结果保存到另一个表中,需要频繁的数据库操作),在运行的时候,给出一个提示:说正在处理数据。在程序运行一段时间之后,控制台提示:java.lang.OutOfMemoryError
对于这个错误,应该如何解决。

解决方案 »

  1.   

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

  2.   

    处理一个表中的数据,对其统计,再把统计的结果保存到另一个表中,需要频繁的数据库操作,多少?
    不会吧,这种错误网上一搜很多的,搜一下吧,这是其中之一。
    環境: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 試試看吧