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数据库时的数据取出规则,来进行优化处理。

游戏服java程序启动,显示内存溢出的更多相关文章

  1. java程序运行时内存分配详解

    java程序运行时内存分配详解 这篇文章主要介绍了java程序运行时内存分配详解 ,需要的朋友可以参考下   一. 基本概念 每运行一个java程序会产生一个java进程,每个java进程可能包含一个 ...

  2. 不错的linux下通用的java程序启动脚本

    不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...

  3. java中三种常见内存溢出错误的处理方法

    更多 10   相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的 ...

  4. java中三种常见内存溢出错误的处理方法(good)

    相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识. 在解决j ...

  5. 老李案例分享:MAT分析应用程序服务出现内存溢出过程

    老李案例分享:MAT分析应用程序服务出现内存溢出过程   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loa ...

  6. spring boot启动报内存溢出的问题

    问题: springBoot项目,已经两次了,启动报内存溢出,内存泄露 分析: 内存泄露是因为垃圾回收器想要回收程序不用的对象,但是该对象还有引用存在 解决: 1.第一次是mybatis文件和Java ...

  7. Java程序运行时内存划分

    1.Java程序跨平台运行的原因 主要原因是:各种平台的JVM和字节码文件 Java源程序--具体平台的机器代码文件---被编译器翻译成平台无关的Class文件,又用特定JVM运行字节码文件,JVM在 ...

  8. 启动tomcat内存溢出

    在运行项目的过程中,启动tomcat内存溢出.查阅了一些解决办法,总结出来留个笔记. 1.使用Myeclipse2014+tomcat 7 ,在MyEclipse中将项目部署到Tomcat下,启动to ...

  9. java程序启动参数-D含义详解

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt407 java程序启动参数 -D是用来做什么的呢?去查询了一下官方解释: S ...

随机推荐

  1. MySQL里的found_row()与row_count()的解释及用法

    MySQL中有两个函数来计算上一条语句影响了多少行,不同于SqlServer/Oracle,不要因为此方面的差异而引起功能问题   出处:mysqlpub.com MySQL中有两个函数来计算上一条语 ...

  2. iOS- Terminating app due to uncaught exception 'NSRangeException'

    错误描述: Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM object ...

  3. Linux下查看文件和文件夹大小

     当磁盘大小超过标准时会有报警提示,这时如果掌握df和du命令是非常明智的选择. df可以查看一级文件夹大小.使用比例.档案系统及其挂入点,但对文件却无能为力.    du可以查看文件及文件夹的大小. ...

  4. jq 构造函数,然后再表单提交过程中对数据进行修改

    先贴代码 <script type="text/javascript"> function appendText(){ var content = $("#t ...

  5. php 选择排序法

    private function demo(array $arr = array()){ $len = count($arr); if ($len == 1) return $arr; else fo ...

  6. 设置二级域名共享一级域名Cookie和删除共享Cookie

     设置共享Cookie: 二级域名要想共享一级域名的cookie,只需要设置cookie.Domain = ".一级域名.com";   删除共享Cookie:  HttpCook ...

  7. 使用PHP的五个小技巧

    PHP的一些小技巧,比较基础,总结一下,老鸟换个姿势飘过去就是. 1. str_replace str_replace是非常常常常常用的php函数,用于字符串替换,经常看到某些php新人为了替换一批字 ...

  8. apt-get 按照php7后apache 输出php源文件

    需要添加php7的模块 sudo apt-get install libapache2-mod-php7.0

  9. LESS介绍及其与Sass的差异

    自从一个月前我偶然发现LESS之后我就开始坚定的使用它了.CSS本身对我来说从来不是问题,但是我很好奇使用变量来沿着一个调色盘为我的网站或模板创建一些东西的想法.拥有一个提供固定数量选项可选的色盘可以 ...

  10. Java多线程基础知识(二)

    一. Java线程具有6种状态  NEW 初始状态,线程被创建,但是还没有调用start方法. RUNNABLE 运行状态,java线程将操作系统中的就绪和运行两种状态笼统的称作进行中. BLOCKE ...