java heap 参数_java heap space解决方法和JVM参数设置

因为程序要从数据读取近10W行记录处理,当读到9W的时候就出现 java.lang.OutOfMemoryError: Java heap space 这样的错误。

在网上一查可能是JAVA的堆栈设置太小的原因。

跟据网上的答案大致有这两种解决方法:

1、设置环境变量

set JAVA_OPTS= -Xms32m -Xmx512m

可以根据自己机器的内存进行更改,但本人测试这种方法并没有解决问题。可能是还有哪里需要设置。

2、java -Xms32m -Xmx800m className

就是在执行JAVA类文件时加上这个参数,其中className是需要执行的确类名。(包括包名)

这个解决问题了。而且执行的速度比没有设置的时候快很多。

如果在测试的时候可能会用Eclispe 这时候就需要在Eclipse ->run -arguments 中的VM arguments

中输入-Xms32m -Xmx800m这个参数就可以了。

java.lang.OutOfMemoryError: Java heap space

===================================================

使用Java程序从数据库中查询大量的数据时出现异常:

java.lang.OutOfMemoryError: Java heap space

在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。

JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.

JVM在启动的时候会自动设置Heap

size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms

-Xmx等选项可进行设置。

例如:java -jar -Xmn16m -Xms64m -Xmx128m MyApp.jar

如果Heap Size设置偏小,除了这些异常信息外,还会发现程序的响应速度变慢了。GC占用了更多的时间,而应用分配到的执行时间较少。

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”。

==========================================================

经过一个晚上的努力终于完成了一个文件替换指定字符串的程序,但是由于我要替换的全站程序html文件太多,所以eclipse下边老是在一个目录结束后

报出java.lang.OutOfMemoryError: Java heap space的异常,然后就崩溃了。

我一想肯定是频繁操作造成来不及回收,于是在每个循环之后加上一个Thread.sleep(1000),发现还是到那个目录下就死掉,于是把

1000改成5000,还是到那里死掉,我想可能不是来不及回收这么简单,或许sun 的JVM里边刚好对于这种情况不释放也有可能。

接着我又把启动的参数添上一个 -Xmx256M,这回就可以了。

想一想,还是对于垃圾回收的原理不太了解,就在网上查了一下,发现了几篇不错的文章。

还有:Java堆的管理—垃圾回收提到一下几点,很不错,或许可以作为写程序时候的准则:

(1)不要试图去假定垃圾收集发生的时间,这一切都是未知的。比如,方法中的一个临时对象在方法调用完毕后就变成了无用对象,这个时候它的内存

就可以被释放。

(2)Java中提供了一些和垃圾收集打交道的类,而且提供了一种强行执行垃圾收集的方法--调用System.gc(),但这同样是个不确定

的方法。Java

中并不保证每次调用该方法就一定能够启动垃圾收集,它只不过会向JVM发出这样一个申请,到底是否真正执行垃圾收集,一切都是个未知数。

(3)挑选适合自己的垃圾收集器。一般来说,如果系统没有特殊和苛刻的性能要求,可以采用JVM的缺省选项。否则可以考虑使用有针对性的垃圾收

集器,比如增量收集器就比较适合实时性要求较高的系统之中。系统具有较高的配置,有比较多的闲置资源,可以考虑使用并行标记/清除收集器。

(4)关键的也是难把握的问题是内存泄漏。良好的编程习惯和严谨的编程态度永远是最重要的,不要让自己的一个小错误导致内存出现大漏洞。

(5)尽早释放无用对象的引用。

大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null,暗示垃圾收集器来收集该对象,还必须注意该引用的

对象是否被监听,如果有,则要去掉监听器,然后再赋空值。

就是说,对于频繁申请内存和释放内存的操作,还是自己控制一下比较好,但是System.gc()的方法不一定适用,最好使用finallize强

制执行或者写自己的finallize方法。

================================================

tomcat

遇到TOMCAT出错:java.lang.OutOfMemoryError: Java heap space,于是查了资料,找到了解决方法:

If Java runs out of memory, the following error occurs:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

Java heap size can be increased as follows:

java -Xms -Xmx

Defaults are:

java -Xms32m -Xmx128m

如果你用win

/tomcat/bin/catalina.bat 加上下面的命令:

set JAVA_OPTS=-Xms32m -Xmx256m

如果你用unix/linux

/tomcat/bin/catalina.sh 加上下面的命令:

JAVA_OPTS="-Xms32m -Xmx256m"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 进程崩溃_java程序崩溃自启脚本

java程序崩溃自启脚本教程1.将java程序崩溃自启脚本下载下来,放入项目的同级目录,将proc_name"xxx.jar" 更改成对应的名称2.chmod 777 文件 给于权限3.将想要jar程序停止 执行./test.sh 如果出现-bash: ./practice1.sh: /bin/bash^M: bad interpreter: No such file…

java程序流程控制_java程序流程控制

顺序结构分支结构(条件结构)循环结构控制循环结构顺序结构:如果代码里没有流程控制,程序是至上而下一行一行执行的,一条语句执行完之后继续执行下一条语句,直到程序的最后。if语句:基本语法:if(表达式){方法体}else if(表达式){方…

java调用c视频接口_JAVA本地调用(JNI- java调用c)

记录一下工作内容,对术语了解不多,暂且这样记着吧。java调用c一、写jni的步骤如下:1.创建java类,定义接口函数,使用native修饰;2.将java类编译成class;3.将class编译成*.h头文件;4.在…

java 随机 数字 字母组合_java生成随机数字和字母组合

import java.util.Random;public String getCharAndNumr(int length){String val "";Random random new Random();for(int i 0; i < length; i){String charOrNum random.nextInt(2) % 2 0 ? "char" : "num"; // 输出字母还是数字if(&q…

java 声明抽象方法_java – 类必须声明为abstract或实现抽象方法错误

这是我的代码,假设在按下按钮时更改一些文本&#xff1a; –public class MyActivity extends ActionBarActivity {TextView txtview;Button butto;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.…

java socket 线程池_java socket编程的一个例子(线程池)

服务器程序EchoServer.java&#xff1b;import java.io.*;import java.net.*;import java.util.concurrent.*;public class EchoServer {private int port10000;private ServerSocket serverSocket;private ExecutorService executor;//线程池private final int pool_size4;pri…

java是值传递还是引用传递_Java 到底是值传递还是引用传递?

点赞、收藏还挺多&#xff0c;求一波关注------------------------------------------------------------没人邀请&#xff0c;自己强行回答一波。关于这个问题&#xff0c;引发过很多广泛的讨论&#xff0c;看来很多程序员对于这个问题的理解都不尽相同&#xff0c;甚至很多人…

java趣事_【趣事】Java程序员最年轻,C++程序员最年老

原标题&#xff1a;【趣事】Java程序员最年轻&#xff0c;C程序员最年老说起我们对编程世界现有的刻板印象&#xff0c;你一定听说过类似于没有人喜欢用Java编码或者使用C 都是老人家&#xff0c;等等这样的话。为了分析这些刻板印象背后的真相&#xff0c;Trestle Technology的…

koa2 mysql 中间件_Koa2 和 Express 中间件对比

koa2 中间件koa2的中间件是通过 async await 实现的&#xff0c;中间件执行顺序是“洋葱圈”模型。中间件之间通过next函数联系,当一个中间件调用 next() 后&#xff0c;会将控制权交给下一个中间件, 直到下一个中间件不再执行 next() 后, 将会沿路折返,将控制权依次交换给前一…

mysql 索引 内存_mysql索引【第三篇】

##innodb引擎的数据是按页为单位的&#xff0c;当需要读一条记录时&#xff0c;并不是将这个记录本身从磁盘中读取出来&#xff0c;而是以页为单位将整个页读取到内存中&#xff0c;每个页默认大小为16kb数据查询过程&#xff1a; 磁盘---->内存---->返回结果数据更新过…

python notebook配置_使用 Jupyter Notebook 配置 Stata\Python\Julia\R

作者&#xff1a;许梦洁 (中山大学)E-mail: xumj9mail2.sysu.edu.cn原文链接&#xff1a;磐石若水 → 使用 Jupyter Notebook 配置 Stata/Python/Julia/RStata 连享会   课程主页 || 直播视频 || 知乎推文扫码查看连享会最新专题、公开课视频和 100 多个码云计量仓库链接。早在…

qt 飞扬青云_Qt编写带频谱的音乐播放器

之前有个项目需要将音频文件的频谱显示出来&#xff0c;想了很多办法&#xff0c;后面发现fmod这个好东西&#xff0c;还是跨平台的&#xff0c;就一个头文件一个库文件就行&#xff0c;简单小巧功能强大&#xff0c;人家做的真牛逼。为了不卡住界面&#xff0c;采用了多线程处…

java什么是工作流程_springmvc工作流程是什么

springmvc工作流程是什么&#xff1a;1、springmvc工作原理图2、springmvc工作流程1、 用户向服务端发送一次请求&#xff0c;这个请求会先到前端控制器DispatcherServlet(也叫中央控制器)。2、DispatcherServlet接收到请求后会调用HandlerMapping处理器映射器。由此得知&#…

java se入门_java SE 入门之运算符(第三篇)

在 java 中主要有以上运算符&#xff0c;分为 赋值运算符 &#xff0c;算术运算符、关系运算符(比较运算符),逻辑运算符和三目运算符(三元运算符).我们一起来学习下吧&#xff01;一、赋值运算符赋值运算符主要有五个、分别是 (赋值)、(加上一个在赋值)、-(减去一个在赋值)、*…

java 封闭实例_不能访问类型…的封闭实例

出于教育目的&#xff0c;我尝试制作一个服务器和一个客户端&#xff0c;其中服务器从多个客户端接收数据并回显每条消息。问题是&#xff0c;当我尝试让服务器一次将回显发送到所有客户端时。public class SocketServer {ArrayList ts new ArrayList();ServerSocket serv;sta…

java接口权限管理在哪里_JAVA-访问权限控制

以前对于public、private、protect、default&#xff0c;都只是简单的知道其对应的访问权限范围&#xff0c;现在看了think in java中的描述&#xff0c;讲了这几种访问权限在什么场景下使用&#xff0c;觉得进一步的了解的它存在的意义和合理性。因为在我们的日常开发中&#…

java 重写session_使用Shiro重写Session 自定义SESSION

引入shiro的jar包1.2.3org.apache.shiroshiro-core${shiroVersion}org.apache.shiroshiro-web${shiroVersion}org.apache.shiroshiro-ehcache${shiroVersion}org.apache.shiroshiro-spring${shiroVersion}配置shiro(web.xml)shiroFilterorg.springframework.web.filter.Delegat…

java7最后战线_我的世界最后战线2.0整合包

我的世界1.7.2最后战线The end battle line正式V2修复版是我的世界最后战线2.0整合包。游戏信息地图名字: The End Battle Line「正式版」地图分类: 其他地图类型: 存档地图版本: 后期Anvil格式(1.3)游戏介绍>>前言<<经过了半学期加整整大半个暑假的努力&#xff0…

js添加多marker 高德地图_覆盖物-参考手册-地图 JS API | 高德地图API

覆盖物覆盖物是指叠加在地图底图之上的一些常见要素&#xff0c;包括Marker类点标记。 构造函数 说明AMap.Marker( 构造一个点标记对象&#xff0c;通过MarkerOptions设置点标记对象的属性MarkerOptions 类型 说明map 要显示该marker的地图对象position 点标记在地图上显示的位…

java敏感异常是什么_java中的异常是什么?

Throwable(所有error和exception的父类:超类)Java将错误变成对象交给异常处理机制Error(仅靠程序本身无法恢复的严重错误)一般是环境的问题&#xff0c;JVM的问题&#xff0c;并非程序的问题&#xff1b;最典型的就是虚拟机中运行的程序过多&#xff0c;造成的虚拟机内存溢出&a…