Java内存溢出(outofmemory:Java heap space)更改堆大小

这篇具有很好参考价值的文章主要介绍了Java内存溢出(outofmemory:Java heap space)更改堆大小。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

在跑一个项目的时候需要构建大量对象,导致出现内存溢出错误。去网上查需要修改堆大小,于是按照网上80%的方法修改了配置,结果依然内存溢出。于是,开启了半天的刨根问底之旅。

过程

第一阶段

首先是按照网上说的方法,打开idea在上方找到help,然后点击edit custom vm options,

java设置heap大小,问题排查,java,jvm,intellij-idea,windows

然后就打开了下面这个文件,然后修改-Xmx,-Xms等堆内存设置,这已经是我改的乱七八糟的结果了。

java设置heap大小,问题排查,java,jvm,intellij-idea,windows

然后关闭idea重启,运行程序,不行。。。

第二阶段

我开始搜索其他方法,有一个教程说,可以改settings里面的一些关于jvm的配置,重复了几次,改完后依然没有效果。

这时我开始学习借助工具分析,在jdk的bin目录下有一个程序叫jvisualvm.exe,它是jdk自带的分析工具。打开它,

java设置heap大小,问题排查,java,jvm,intellij-idea,windows

打开长这样,

java设置heap大小,问题排查,java,jvm,intellij-idea,windows

在你的程序启动之后,左侧栏里会有你的程序名,双击它,在右面会出现它的概述,监视等,都可以点进去。
下面就是platform的概述,可以看到我刚刚改的乱七八糟的配置。

java设置heap大小,问题排查,java,jvm,intellij-idea,windows

点击监视就可以看到cpu,内存等的运行情况。

java设置heap大小,问题排查,java,jvm,intellij-idea,windows

接下来,我便开始实验,发现无论怎么改vmoptions中的配置,在platform的概述中都能更新为修改后的内容。但是监视我的运行程序时发现,我的堆内存大小一点也没有变。。。并且堆的大小还没扩容到最大堆大小便开始频繁gc,最后内存溢出(开始焦虑)

第三阶段

为了搞明白为啥没用完堆内存就溢出,继续学习工具。
在刚刚的软件中点击,工具->插件->可用插件->选择visual vm并开始下载安装。这个插件可以帮助我们看到新生代,老年代等具体的内存分配情况。

java设置heap大小,问题排查,java,jvm,intellij-idea,windows

安装好后,再修改配置,跑几遍程序。发现了问题所在,无论我怎么修改配置,我的新生代,老年代的大小都没变,相当于修改无效。。。而在不断的创建对象和gc中,我的老年代满了。。。(无语)

我突然想到,还可以在程序的运行配置中添加参数,修改堆内存。于是,点击上方程序(xxxApplication)的小箭头,点击edit configurations,

java设置heap大小,问题排查,java,jvm,intellij-idea,windows

然后在environment下的vm options中再加上你的修改,然后应用。

java设置heap大小,问题排查,java,jvm,intellij-idea,windows

再运行程序,通过visual vm观察堆内存分配,发现okok,按照自己的配置分配内存了。完整的程序执行一遍,顺利顺利,没有内存溢出了。
至此,这个问题终于搞定了。。。(开心)文章来源地址https://www.toymoban.com/news/detail-528013.html

总结

  • 之前遇到内存溢出问题的时候,也上网搜了好多答案,但是怕麻烦,所以一直拖着没有解决。今天逼着自己必须把它搞定,无论网上说的什么方法我都尝试,才有决心攻克难关。
  • 今天也学习了visual vm的使用,之前在网上看到相关用工具分析堆内存的帖子就退出去,还是畏难吧,今天按照教程打开了工具,下载了插件,发现也没有那么难,对jvm也有了新的理解。
  • 这次问题的排查过程,独立也不独立,希望以后遇到困难不要害怕,勇敢解决!

到了这里,关于Java内存溢出(outofmemory:Java heap space)更改堆大小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DBeaver导数据抛错 Java heap space

    从表中导出数据时报错: 原因: DBeaver内存设置过小,需要调整 找到配置文件:安装目录-dbeaver.init Xms为最小内存,默认 64M Xmx为最大内存,默认 1024M,调大此值即可,如10240M

    2024年02月05日
    浏览(32)
  • JAVA HEAP SPACE解决方法和JVM参数设置

    JAVA HEAP SPACE解决方法和JVM参数设置 JAVA HEAP SPACE解决方法和JVM参数设置 原因分析 设置 异常分析 Java堆的管理—垃圾回收提到一下几点,很不错,或许可以作为写程序时候的准则: jvm 内存查看与分析工具 在JVM中如果98%的时间是用于GC(Garbage Collection)且可用的 Heap size 不足2%的时

    2024年02月06日
    浏览(39)
  • 解决idea出现的java.lang.OutOfMemoryError: Java heap space的问题

    今天使用 idea 开发时,突然报出如下错误:

    2023年04月19日
    浏览(41)
  • Java Heap Space问题解析与解决方案(InsCode AI 创作助手)

    Heap Space问题是Java开发中常见的内存溢出问题之一,我们需要理解其原因和表现形式,然后通过优化代码、增加JVM内存和使用垃圾回收机制等方法来解决。 一、常见报错 二、Heap Space问题的原因 对象创建过多:如果程序中创建了大量的对象,而这些对象又不能被垃圾回收机制

    2024年02月03日
    浏览(36)
  • 使用jmeter做性能测试时遇到java.lang.OutOfMemoryError: Java heap space. 提示怎么办

    使用jmeter做性能测试遇到java.lang.OutOfMemoryError: Java heap space.时是jvm的问题,需要调大jvm的内存,windows压力机通过编辑bin文件下的jmeter.bat文件来修改jvm的内存大小。在jmeter.bat文件的编辑状态下查询if not defined HEAP可快速查找到需要修改的位置。 修改前为默认大小: 修改后(根

    2024年02月16日
    浏览(49)
  • 接口报错原因分析:handler dispatch failed;nested exceptionis java.lang.outofMemoryError:JAVA heap space

    java.lang.OutOfMemoryError: Java heap space  解决方法 这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.设置的方法主要是几个. 加上 JAVA_OPTS=-Xms64m -Xmx512m Linux 在{tomcat_home}/bin/catalina.sh的前面,加

    2024年02月08日
    浏览(44)
  • Android 内存分析(java/native heap内存、虚拟内存、处理器内存 )

    1.jvm 堆内存(dalvik 堆内存) 不同手机中app进程的 jvm 堆内存是不同的,因厂商在出厂设备时会自定义设置其峰值。比如,在Android Studio 创建模拟器时,会设置 jvm heap 默认384m , 如下图所示: 当app 进程中java 层 new 对象(加起来总和)占用的堆内存达到jvm heap 峰值时,就会抛出OOM 。

    2024年02月14日
    浏览(42)
  • FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory node编译时的内存溢出

    报错:FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory 原因:node编译时的内存溢出,因为打包文件过大,刚好超过内存的限制大小造成编译中断。 解决方法1: 解决方法2:(实践过可用) 使用 increase-memory-limit 插件,增加node服务器内存限制

    2024年02月03日
    浏览(32)
  • Java中的内存泄露、内存溢出与栈溢出

    大家好,我是欧阳方超。本次就Java中几个相似而又不同的概念做一下介绍。内存泄漏、内存溢出和栈溢出都是与内存相关的问题,但它们之间有所不同。 我们经常会遇到内存泄漏、内存溢出和栈溢出等问题,这些问题都与内存的使用有关。 内存泄漏(memory leak)指的是程序

    2024年02月03日
    浏览(60)
  • VITE打包时内存溢出问题解决 FATAL ERROR: Ineffective mark-compacts near heap limit

    楼主也不知道怎么回事在编写Vue3+Cesium项目打包时就遇见了这个问题,然后根据百度到的资料说是node编译时内存不够需要手动提升内存,然后需要安装两个组件,相关博客链接我贴在下面: https://blog.csdn.net/qq_43227958/article/details/123017935 安装完插件之后运行npm run build 还是不行,会报

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包