`
jony19830201
  • 浏览: 3619 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

java.lang.OutOfMemoryError 的解決方法

阅读更多

执行输出xml文本操作时出现java.lang.OutOfMemoryError 问题,提供两种解决方案。。。。

第一种
如果用的是eclipse作为开发环境并在eclipse下对程序进行发布的直接修改快捷方式修改为:
D:\eclipse\eclipse.exe -vmargs -Xmx512M
OK 了。 :evil:


第二种
 [u]java.lang.OutOfMemoryError [/u]的解決方法
看到這個訊息就是要加大記憶體空間啦,java 程式有 -xms 跟 -xmx 參數可以用,Tomcat 到了 5.0.21 之後有畫面可以設定。

就是最下面那三行,一般只要設定 Initial memory pool (初始值) 跟 Maximum memory pool (最大值) 就可以了。

但是解決Out Of Memory Error 問題之前,一定要先了解狀況發生的原因。

一般都是發生在開啟大型檔案或跟資料庫一次拿了太多的資料,造成 Out Of Memory Error 的狀況,這時就大概要計算一下資料量的最大值是多少,並且設定所需最小及最大的記憶體空間值。

另一種狀況平時比較難查覺。就是 Servlet 或 JSP 的 Container 突然同時上線人數爆增,也相對造成記憶體需求不足,所以也必須要計算出程式所需的資料量*同時上線人數,來設定記憶體的需求量。(如果要有最佳化的值,最好是配合 gc 做調校)

有一種說法是聽來的,實際上是不是如此還有待確認。

當 CPU 速度愈快,記憶體的最小需求量也就必需愈大。原因是 CPU 愈快,短時間內能處理的資料量也就愈大,所以在 java 做 GC 之前,可能已經記憶體已經消耗完了,所以 CPU 的速度也是記憶體初始需求量的重要因素之一。

目前這三項應該足以應付絕大部份 Out Of Memory Error 的狀況,其它造成 Out Of Memory Error 的狀況,等有遇到再來補充。
[img][/img][img][/img][img][/img][img][/img][img][/img][img][/img]

第一种实现了,所以第二种是转贴的。。

分享到:
评论
2 楼 fuhao19830308 2008-01-03  
我前一段批量生成静态页也遇到了这样的问题!这是由于你循环里也始终要着数据库连接而不能及时释放内存引起的。
我的做法是把for循环分开做,每个循环用一个类去做,每个分别取数据库连接,这样虚拟机就可以释放内存了。这仅仅是我的一点小小经验,如果还是出现这问题,你就要看看就竟是哪些参数影响的,然后在每个类分别取就能释放内存了!
1 楼 jony19830201 2007-11-17  
    我郁闷了啊,这个本来解决的问题,今天又再次出现。。。。。
     项目中sql的量增加到200W条,然后这张表再与其他几张表关联,取出20个左右字段,然后将得到的5000多条数据塞到xml文件中去。3个for循环欠套,对每个对象进行实例化。
     我实菜鸟,希望得到高手的帮助,昨天对于处理100多万的数据还可以通过增加内存解决,现在又出错了。。。。怎么对这种程序进行优化啊

相关推荐

Global site tag (gtag.js) - Google Analytics