1.OutOfMemoryError:Java heap space
过程:服务器上面的mysql突然异常重启,导致了程序启动的时候报错
问题1:OutOfMemoryError:Java heap space
解决过程:
1.查看mysql的错误日志
根据错误日志,修复相关的表,修改相关的参数设置。
修复表使用的是repair table命令。
重启程序,依然报错:问题1.
2.更改mysql的缓冲池大小
由于服务器上面开了多个区服,可能导致的程序运行的时候,分配的内存不足。
更改innodb-buffer-pool-size大小,根据实际情况更改。
重启程序,依然报错:问题1.
3.更改jvm运行时分配内存大小。
通过更改jvm运行时初始设置参数来达到设置的目的。
-Xms -Xmx -Xmn 等参数以及gc回收参数来设置。
重启程序,依然报错:问题1.
更改到2.5G的时候,程序正常启动,但是跑起来一段时间后down掉了。由于本机内存不足。
4.更改数据库来测试。
通过导出导入来建立两个新的测试库,使用过的是这个区服的数据和其他区服的数据。
将游戏服挂载到本区服依然报错问题1.挂在到另外一个区服,则可以正常启动。
预估判断数据库中表的问题。
5.开发组使用程序在本机运行调试,发现是由于数据库中的两张大表,一直在无限循环查询,查询结果放入到jvm的内存中(由于两张表数据比较大),所以导致内存溢出。
于是,就这个问题,展开了修复与调试。
使用了之前备份的数据,来还原这两张表,结果依然运行不起来。报同样的错误。
删除两张大表,程序可以正常启动。初步判断由于程序在查询这两张表的时候,由于数据太大,而且程序一直在循环的读入导致了内存的溢出。
于是,就java程序在处理大数据方面做出调整和优化。
通过设置游标来给java程序每次取出数据设限,结果程序可以正常启动。经过一天的测试,没有出现什么其他的异常。
useCursorFetch=true&defaultFetchSize=1000
通过上面这几个参数来给予java程序连接mysql数据库时的数据取出规则,来进行优化处理。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?