1. 问题描述
当从数据库中查询大量的数据,每个模板取出来几百万条数据,或者是频繁的刷新项目、模板时就会占用Java虚拟机JVM的大量内存,超过内存就会出现报java.lang.OutOfMemoryError:Java heap space内存一处的错误,具体报错如下:
2. 原因
由于服务器的JVM不够用而抛出的错误,JVM在启动的时候会自动设置Heap size的值,初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。所以可以根据自己的情况进行修改JVM的-Xmn -Xms -Xmx等选项。
 
2.1 内存大小设置
Heap Size最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。Heap size的 -Xms -Xmn 设置不要超出物理内存的大小。否则会提示“Error occurred during initialization of VM Could not reserve enough space for object heap”
3. 解决方案
3.1 调大服务器的内存
下面我们以tomcat为例,来查看下如何修改内存大小。
修改服务器的内存溢出在TOMCAT_HOME\bin\catalina.bat 中添如下代码:
 
 
  1. set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m
3.2 启用磁盘缓存
我们默认使用的是内存缓存,就是取出的数据全部放在服务器内存中,此时若数据量大的情况下就很可能会导致内存不够用,改为磁盘缓存,就是将取出的数据部分放在内存中,部分放在磁盘中,这样可以减少服务器内存占用,但是从磁盘中读取数据会造成取数效率下降,增长时间的。
具体的操作可查看数据集缓存与共享的缓存至磁盘小节。
 
 
 
1. 问题描述
用户访问某张报表时,服务器就使用一个线程来处理报表运算。
如果访问的人数太多且报表运算量大的话,同一时间争抢服务器cpu线程的人就会很多。服务器响应能力就会减弱,所以我们需要合理控制服务器线程个数。
2. 设置方法
2.1 设置方式
我们可以通过修改Tomcat服务器的配置,来控制线程数。
打开%Tomcat_HOME%/conf/server.xml文档,找到<Connector port="8080"....>一栏。
在Connector port = "8080"后面加上相应地参数控制线程数,控制参数如下:
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75
acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100
设置完成后如同: <Connector port="8080" minProcessors="150" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
2.2 注意事项
web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。
这里的连接数是无法直接给出最佳配置的,需要根据您的实际情况,在不断调整,不断测试的基础上,才能到到最合理配置。

内存大小设置 Java heap space错误的更多相关文章

  1. java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)

    下面是从网上找到的关于堆空间溢出的错误解决的方法: java.lang.OutOfMemoryError: Java heap space ============================== ...

  2. java.lang.OutOfMemoryError: Java heap space错误及处理办法

      以下是从网上找到的关于堆空间溢出的错误解决办法: java.lang.OutOfMemoryError: Java heap space ============================= ...

  3. java.lang.OutOfMemoryError: Java heap space错误和方法(集、转)

    错误的方式来解决溢出下面的堆空间是从网上找: java.lang.OutOfMemoryError: Java heap space ================================= ...

  4. 转:java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转)

    以下是从网上找到的关于堆空间溢出的错误解决办法: Java.lang.OutOfMemoryError: Java heap space =============================== ...

  5. 实战项目中Java heap space错误的解决

    部标GPS通讯系统在上线之后,经过不断调试,终于稳定运行一段时间,后来又遇到了Java heap space错误异常!日志如下: 说明系统中有未释放的对象.如何找出这些未释放对象以及监控JVM堆内存, ...

  6. Tomcat报java.lang.OutOfMemoryError: Java heap space错误停止运行如何解决

    最近开发的一个商业项目,部署完成后,经常出现Tomcat挂掉的现象,报的异常是:java.lang.OutOfMemoryError: Java heap space,上网google了一下,了解了一 ...

  7. IBM Worklight OutOfMemoryError: Java heap space 错误

    在启动  IBM Worklight 6.0 server 的时候,报了一个  OutOfMemory 的错误: [INFO    ] FWLSE4006I: Worklight Studio is ...

  8. hadoop1.0.4运行程序出现“Java heap Space”错误

    根据虾皮博客中教程,成功搭建了一个12台电脑的Hadoop云平台,而且成功运行了软件自带的wordcount程序,处理10M数据. 但是当程序处理40M时候,却出错了.出错提示“Java Heap S ...

  9. 执行Hive出现Error running child : java.lang.OutOfMemoryError: Java heap space错误

    具体错误日志如下: 2018-05-11 15:16:49,429 FATAL [main] org.apache.hadoop.mapred.YarnChild: Error running chi ...

随机推荐

  1. [转]logback常用配置简介

    logback是一套日志框架,由log4j的优化版,由同一个作者开发,在速度和性能上都超过其他日志框架,再结合slf4j,已成为当前最流行的日志框架. Logback最常用就是在classpath定义 ...

  2. [转]HTML 简介

    HTML 实例 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  3. 配置hive元数据数据库

    <configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <v ...

  4. ElasticSearch(二) 关于DSL

    关于Lucene里面的查询评分,其实是基于一个公式:TF/ IDF(Term-Frequency/ Inverse Document Frequency),词频率/ 倒排文档频率,这个公式讲了一个故事 ...

  5. MOSSE(DSST)类和KCF类中滤波器推导结果不一致的解释

    首先要说明,DSST//BMVC2014类的CF是从MOSSE//CVPR2010模型得到的,是从信号的角度考虑问题,该类CF直接认为信号和滤波器之间存在相关的关系 而KCF//TPAMI2015类C ...

  6. API - .after

    .after() Insert content, specified by the parameter, after each element in the set of matched elemen ...

  7. grep 正则问题 this version of PCRE is compiled without UTF support

    问题 在使用grep -P,出现如下报错: grep: this version of PCRE is compiled without UTF support 原因 有些系统支持的正则规范不同. 解 ...

  8. 支付宝内部功能调用APP的said说明

    追加: 支付宝收款码 alipayqr://platformapi/startapp?saId=20000123   微信扫一扫 weixin://scanqrcode (跳转微信扫一扫) 支付宝扫一 ...

  9. zabbix 3.4监控mysql,提示mysql: [Warning] Using a password on the command line interface can be insecure.

    mysql从5.6版本开始,如果是命令行直接出现了数据库连接密码就会有以下警告: mysql: [Warning] Using a password on the command line inter ...

  10. 关于mybatis map foreach遍历

    map 数据如下 Map<String,List<Long>>. 测试代码如下: public void getByMap(){ Map<String,List<L ...