游戏服java程序启动,显示内存溢出
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程序启动,显示内存溢出的更多相关文章
- java程序运行时内存分配详解
java程序运行时内存分配详解 这篇文章主要介绍了java程序运行时内存分配详解 ,需要的朋友可以参考下 一. 基本概念 每运行一个java程序会产生一个java进程,每个java进程可能包含一个 ...
- 不错的linux下通用的java程序启动脚本
不错的linux下通用的java程序启动脚本(转载) 虽然写起动shell的频率非常不高...但是每次要写都要对付一大堆的jar文件路径,新加jar包也必须要修改起动shell. 在网上找到一个挺好的 ...
- java中三种常见内存溢出错误的处理方法
更多 10 相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的 ...
- java中三种常见内存溢出错误的处理方法(good)
相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识. 在解决j ...
- 老李案例分享:MAT分析应用程序服务出现内存溢出过程
老李案例分享:MAT分析应用程序服务出现内存溢出过程 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.在poptest的loa ...
- spring boot启动报内存溢出的问题
问题: springBoot项目,已经两次了,启动报内存溢出,内存泄露 分析: 内存泄露是因为垃圾回收器想要回收程序不用的对象,但是该对象还有引用存在 解决: 1.第一次是mybatis文件和Java ...
- Java程序运行时内存划分
1.Java程序跨平台运行的原因 主要原因是:各种平台的JVM和字节码文件 Java源程序--具体平台的机器代码文件---被编译器翻译成平台无关的Class文件,又用特定JVM运行字节码文件,JVM在 ...
- 启动tomcat内存溢出
在运行项目的过程中,启动tomcat内存溢出.查阅了一些解决办法,总结出来留个笔记. 1.使用Myeclipse2014+tomcat 7 ,在MyEclipse中将项目部署到Tomcat下,启动to ...
- java程序启动参数-D含义详解
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt407 java程序启动参数 -D是用来做什么的呢?去查询了一下官方解释: S ...
随机推荐
- step 3 socket
socket 网络通讯三要素 IP地址(主机名) 网络中设备的标示 不易记忆,可以用主机名 本地回环地址:127.0.0.1 主机名:localhost 每台计算机都有一个 127.0.0.1 如果 ...
- android自定义控件(7)-获取自定义ImageView的src属性
创建一个自定义组件,继承 ImageView.在我的 xml 布局文件中是这样设置的: <Mycomponent android:src="@drawable/my_test_imag ...
- 使用vagrant部署开发环境
参考文章:http://blog.smdcn.net/article/1308.html 准备工作: 下载安装 VirtualBox :https://www.virtualbox.org/ 下载安装 ...
- hdu 4960 Another OCD Patient (最短路 解法
http://acm.hdu.edu.cn/showproblem.php?pid=4960 2014 Multi-University Training Contest 9 Another OCD ...
- mock.js-无需等待,让前端独立于后端进行开发
概述 首先啦,我不认识mock.js的作者,带着需求找到mock.js让我觉得很惊艳. 相对于其他同类的框架的实现,mock.js超出了我的意料. 基于 数据模板 生成模拟数据. 基于 HTML模板 ...
- putchar和puts
#include<stdio.h> int main() { char a = 'h'; char b[] = "hello"; putchar(a); //putch ...
- c#中两种不同的存储过程调用与比较
存储过程简介 简单的说,存储过程是由一些SQL语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序调用,也可以从另一个过程或触发器调用.它的参数可以被传递和返回.与应用程序中的函 ...
- SEO 百度后台主动推送链接
实践步骤,先用爬虫程序将本网站的所有连接爬取出来,再用python文件处理程序把爬虫来的东东整理成一行一个链接的文本格式.再用postman接口测试工具,使用post方式,将所有的链接post过去,这 ...
- linux运维人员必会开源运维工具体系
http://oldboy.blog.51cto.com/2561410/775056
- oracle 行列转换的运用
问题: 员工表: A(E_ID,NAME,) 部门表: B(D_ID,D_NAME) 员工与部门关系:C(ID,E_ID,D_ID) SELECT A.E_ID,A.NAME ,B.D_NAME ...