java heap space 什么意思_Java heap space 解决方法(转)

java heap space 什么意思_Java heap space 解决方法(转)因为程序要从数据读取近10W行记录处理,当读到9W的时候就出现java.lang.OutOfMemoryError:Javaheapspace这样的错误。在网上一查可能是JAVA的堆栈设置太小的原因。跟据网上的答案大致有这两种解决方法:1、设置环境变量setJAVA_OPTS=-Xms32m-Xmx512m可以根据自己机器的内存进行更改,但本人测试这种方法并没有解决问题。可能是还有…

大家好,又见面了,我是你们的朋友全栈君。

因为程序要从数据读取近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”

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159163.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ETL的基础知识,看完你就全明白了!「建议收藏」

    ETL的基础知识,看完你就全明白了!「建议收藏」深度解析了ETL的基础概念以及实现方案,很值得一看~

    2022年6月2日
    120
  • Xcode升级后插件失效的原理与修复办法

    Xcode升级后插件失效的原理与修复办法

    2021年9月8日
    59
  • 第七课 实战文件注册机制「建议收藏」

    第七课 实战文件注册机制「建议收藏」                实战文件注册机制【盲人摸象】故名思意就是借助一些我们常用的按钮事件,API断点,去高速有效的锁定此课主要是以回顾和巩固以上六课我们所学的知识,当然这课我奉劝大家还是认真的学习,尤其是以后想靠外挂赚钱的同学,这课学得多自然就会得多不要认为我就是一味的靠我的经验,以下就是一系列调试的技巧 这课主要是观看MOV的赋值,以及寄存器的变化,从而达到激活成功教程这也是以后在激活成功教程带有V…

    2022年7月26日
    6
  • 初识 CTK[通俗易懂]

    初识 CTK[通俗易懂]CTK是什么CTK为支持生物医学图像计算的公共开发包,其全称为CommonToolkit。Github地址:https://github.co…

    2022年5月3日
    113
  • SpringMVC的简介和工作流程「建议收藏」

    SpringMVC的简介和工作流程「建议收藏」一、简介SpringMVC属于SpringFrameWork的后续产品,已经融合在SpringWebFlow里面。Spring框架提供了构建Web应用程序的全功能MVC模块。SpringMVC是一种web层的mvc框架,用于替代servlet(处理响应请求,获取表单参数,表单验证等)二、工作流程1、用户发送请求至前端控制器DispatcherServlet。…

    2022年6月8日
    44
  • Python-matplotlib画图(莫烦笔记)

    https://www.zhihu.com/collection/260736383<此处就不自己写了,看了遍,照着写了一边,作者写的不错。不过有些有些偷懒,我只做了常见的功能>作者:触摸壹缕阳光链接:https://zhuanlan.zhihu.com/p/33270402来源:知乎著作权归作者所有,转载请联系作者获得授权。1.前言Matplotlib是一个python的2D绘图库…

    2022年4月4日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号