如题,
在写Java程序时,如果读入的数据“过多”,
则会运行失败,
提示“OutOfMemory Error”。目前,我是精简了部分数据结构和处理流程,
暂时没有这个错误了。但如果以后数据量大了的话,还是有可能再出现这个问题吧?
所以,请教各位,
如何才能避免“OutOfMemory Error”这个错误呢?
大家有什么经验吗?
或者,这是由于我程序的原因吗?
在写Java程序时,如果读入的数据“过多”,
则会运行失败,
提示“OutOfMemory Error”。目前,我是精简了部分数据结构和处理流程,
暂时没有这个错误了。但如果以后数据量大了的话,还是有可能再出现这个问题吧?
所以,请教各位,
如何才能避免“OutOfMemory Error”这个错误呢?
大家有什么经验吗?
或者,这是由于我程序的原因吗?
本人建了个技术交流群95369264欢迎大家加入
另外,应该避免大量读取数据,不用的数据先不要取到内存,必须用的时候再去取。
还有,适当增大xmx和xms值。
2.应用程序的工作可用内存不够
i. 增加JVM堆内存(-Xmx -XX:PermSize -XX:MaxPermSize)
ii.减少应用程序需要的内存(是不是某些Collection太大了,运用了过多大的buffer)
3.或者是一些无心的对象保留侵占了内存,本应该除去,多检查再试试gc等等
2、如果是操作数据库,直接执行/操作数据库语句。例如,进行一系列复杂的操作,先从多个表联合找出数据,然后再将数据插入到某个表这样的操作时,直接用SQL一步完成,不要将中间结果select出来存在RS中
用于建立内存索引等。数据量应该不会超过1G。所以,是不是调整一下JVM的虚存容量好些?
出现这样的问题,我个人认为好好的检查下自己代码那些内存块没有释放,
还有就是文件读写的时候,用分块的方法,比如说一次读多少K一次写多少K这样控制比较好,而且效率也应该比较满意