我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Java中关于OOM的场景及解决方法是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Java中关于OOM的场景及解决方法是什么

这期内容当中小编将会给大家带来有关Java中关于OOM的场景及解决方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

OOM for Heap=>例如:java.lang.OutOfMemoryError: Java heap space

分  析

此OOM是由于JVM中heap的***值不满足需要,将设置heap的***值调高即可,参数样例为:-Xmx2G

解决方法

调高heap的***值,即-Xmx的值调大。2、OOM for Perm=>例如:java.lang.OutOfMemoryError: Java perm space

分  析

此OOM是由于JVM中perm的***值不满足需要,将设置perm的***值调高即可,参数样例为:-XX:MaxPermSize=512M

解决方法

调高heap的***值,即-XX:MaxPermSize的值调大。

另外,注意一点,Perm一般是在JVM启动时加载类进来,如果是JVM运行较长一段时间而不是刚启动后溢出的话,很有可能是由于运行时有类被动态加载进来,此时建议用CMS策略中的类卸载配置。

如:-XX:+UseConcMarkSweepGC -XX:+CMSClassUnloadingEnabled3、OOM for GC=>例如:java.lang.OutOfMemoryError: GC overhead limit exceeded

分  析

此OOM是由于JVM在GC时,对象过多,导致内存溢出,建议调整GC的策略,在一定比例下开始GC而不要使用默认的策略,或者将新代和老代设置合适的大小,需要进行微调存活率。

解决方法

改变GC策略,在老代80%时就是开始GC,并且将-XX:SurvivorRatio(-XX:SurvivorRatio=8)和-XX:NewRatio(-XX:NewRatio=4)设置的更合理。4、OOM for native thread created=>

如:java.lang.OutOfMemoryError: unable to create new native thread

分  析

参考如下:

(MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads

MaxProcessMemory   指的是一个进程的***内存

JVMMemory         JVM内存

ReservedOsMemory   保留的操作系统内存

ThreadStackSize      线程栈的大小

如果JVM内存调的过大或者可利用率小于20%,可以建议将heap及perm的***值下调,并将线程栈调小,即-Xss调小,如:-Xss128k

解决方法

在JVM内存不能调小的前提下,将-Xss设置较小,如:-Xss:128k

OOM for allocate huge array=>例如:Exception in thread "main": java.lang.OutOfMemoryError: Requested array size exceeds VM limit

分  析

此类信息表明应用程序(或者被应用程序调用的APIs)试图分配一个大于堆大小的数组。例如,如果应用程序new一个数组对象,大小为512M,但是***堆大小为256M,因此OutOfMemoryError会抛出,因为数组的大小超过虚拟机的限制。

解决方法

(1)、首先检查heap的-Xmx是不是设置的过小

(2)、如果heap的-Xmx已经足够大,那么请检查应用程序是不是存在bug,例如:应用程序可能在计算数组的大小时,存在算法错误,导致数组的size很大,从而导致巨大的数组被分配。

OOM for small swap=>例如:Exception in thread "main": java.lang.OutOfMemoryError: request <size> bytes for <reason>. Out of swap space?

分  析

抛出这类错误,是由于从native堆中分配内存失败,并且堆内存可能接近耗尽。这类错误可能跟应用程序没有关系,例如下面两种原因也会导致错误的发生:

(1)操作系统配置了较小的交换区

(2)系统的另外一个进程正在消耗所有的内存

解决方法

(1)、检查os的swap是不是没有设置或者设置的过小

(2)、检查是否有其他进程在消耗大量的内存,从而导致当前的JVM内存不够分配。

注意:虽然有时<reason>部分显示导致OOM的原因,但大多数情况下,<reason>显示的是提示分配失败的源模块的名称,所以有必要查看日志文件,如crash时的hs文件。

上述就是小编为大家分享的Java中关于OOM的场景及解决方法是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Java中关于OOM的场景及解决方法是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Java中关于OOM的场景及解决方法是什么

这期内容当中小编将会给大家带来有关Java中关于OOM的场景及解决方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。1、OOM for Heap=>例如:java.lang.OutOfMemoryE
2023-06-17

Flink+HBase场景化的解决方案是什么

Flink+HBase场景化的解决方案是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Flink+HBase所提供实时计算场景解决方案。实时计算市场竞争分析
2023-06-19

常见JSP中文乱码的场景及其解决方法

本篇内容介绍了“常见JSP中文乱码的场景及其解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JSP开发应用是,中文乱码是个比较常见的问
2023-06-17

基于Java递归算法的封装解决方法是什么

本篇内容介绍了“基于Java递归算法的封装解决方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、递归算法1、概念简介递归算法的核心
2023-06-02

vue3自定义插件的作用场景及使用方法是什么

本篇内容主要讲解“vue3自定义插件的作用场景及使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3自定义插件的作用场景及使用方法是什么”吧!插件的作用场景在vue2的插件那篇文
2023-07-05

关于Opensuse双系统的问题和解决方法是什么

这篇文章将为大家详细讲解有关关于Opensuse双系统的问题和解决方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天干了件愚蠢的事情,稀里糊涂的就用openSUSE11.2修复自己
2023-06-16

thinkphp中in删除方法的使用和应用场景是什么

这篇“thinkphp中in删除方法的使用和应用场景是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“thinkphp中i
2023-07-05

java生产问题排查及解决方法是什么

Java生产问题排查及解决方法主要包括以下几个步骤:收集信息:当出现问题时,首先需要收集相关信息,包括错误日志、异常堆栈信息、输入输出数据、操作步骤等,这些信息有助于定位问题根源。分析日志:根据收集到的信息,分析日志文件,查看异常信息、警告
2023-10-27

Golang中乱码的原因及解决方法是什么

这篇“Golang中乱码的原因及解决方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Golang中乱码的原因及解决方
2023-07-05

基于CUDA out of memory的解决方法是什么

今天小编给大家分享一下基于CUDA out of memory的解决方法是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
2023-07-05

Java中方法和对象的关系是什么

在Java中,方法和对象是密切相关的。对象是类的实例,它可以拥有属性和行为。方法是对象的行为,它定义了对象可以执行的操作。在Java中,方法是在类中定义的,它描述了对象在执行特定任务时应采取的操作。方法可以访问和操作对象的属性,并且可以返
2023-10-26

firefox浏览器中播放背景音乐的解决方法是什么

firefox浏览器中播放背景音乐的解决方法是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在Firefox下播放背景音乐的代码 打开一个空白控制面板粘贴下
2023-06-08

java类型转换异常的原因及解决方法是什么

Java类型转换异常的原因是由于在进行类型转换时,源类型与目标类型之间存在不兼容的关系。这包括以下几种情况:源类型与目标类型之间无继承或实现关系。目标类型的范围超出了源类型的范围。源类型是一个对象,但目标类型不是源类型的父类或接口。源
java类型转换异常的原因及解决方法是什么
2024-02-29

linux无法lspci的原因及解决方法是什么

Linux无法执行lspci命令的原因可能有以下几种:1. 未安装pciutils软件包:lspci命令通常包含在pciutils软件包中,如果未安装该软件包,就无法执行lspci命令。解决方法是使用包管理器安装pciutils软件包,例如
2023-10-18

java heap space错误的解决方法是什么

Java heap space错误是由于堆内存不足导致的。堆内存是Java虚拟机用来存储对象实例和数组的地方,当堆内存不足时,就会抛出java heap space错误。解决这个问题的方法有以下几种:1. 增加JVM堆内存:可以通过在启动J
2023-08-22

PHP5.6乱码的原因及解决方法是什么

本篇内容介绍了“PHP5.6乱码的原因及解决方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.原因乱码的出现是由于字符集的不匹配或
2023-07-05

mysql死锁排查及解决的方法是什么

MySQL死锁是指两个或多个事务相互等待对方持有的资源,导致无法继续执行的情况。为了排查和解决MySQL死锁,可以采取以下方法:1. 记录死锁信息:MySQL的日志文件中会记录死锁信息,可以通过查看错误日志或使用SHOW ENGINE IN
2023-08-16

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录