返回顶部
首页 > 资讯 > 精选 >Java中关于OOM的场景及解决方法是什么
  • 955
分享到

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

2023-06-17 11:06:12 955人浏览 八月长安
摘要

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

这期内容当中小编将会给大家带来有关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的场景及解决方法是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Java中关于OOM的场景及解决方法是什么

本文链接: https://lsjlt.com/news/288835.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中关于OOM的场景及解决方法是什么
    这期内容当中小编将会给大家带来有关Java中关于OOM的场景及解决方法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。OOM for Heap=>例如:java.lang.OutOfMemory...
    99+
    2023-06-17
  • Promise.race()方法功能及应用场景是什么
    这篇文章主要介绍了Promise.race()方法功能及应用场景是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Promise.race()方法功能及应用场景是什么文章都会有所收获,下面我们一起来看看吧。当...
    99+
    2023-07-05
  • PHP并发场景的解决方案是什么
    本篇文章给大家分享的是有关PHP并发场景的解决方案是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在秒杀,抢购等并发场景下,可能会出现超卖...
    99+
    2024-04-02
  • Flink+HBase场景化的解决方案是什么
    Flink+HBase场景化的解决方案是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Flink+HBase所提供实时计算场景解决方案。实时计算市场竞争分析...
    99+
    2023-06-19
  • 常见JSP中文乱码的场景及其解决方法
    本篇内容介绍了“常见JSP中文乱码的场景及其解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JSP开发应用是,中文乱码是个比较常见的问...
    99+
    2023-06-17
  • Java的引用类型及使用场景是什么
    这篇文章将为大家详细讲解有关Java的引用类型及使用场景是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。每种编程语言都有自己操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java ...
    99+
    2023-06-14
  • 关于sqli-labs靶场的第一关不报错的解决方法
    打第一关的时候在id=1后加一个" ' "出现的不报错问题,要在php的配置文件php.ini中修改一下   具体方法如下: 打开phpstudy 然后找到并打开【设置】页面 接着点击【配置文件】下的php.ini 选择,选择要修改的p...
    99+
    2023-08-31
    php 安全
  • ASP 关键字在 Django 中的应用场景是什么?
    ASP(Active Server Pages)是一种用于动态网页开发的技术,而Django则是一种基于Python的Web框架。在Django中,ASP关键字可以用于多种应用场景,本文将详细介绍ASP在Django中的应用。 ASP关键字...
    99+
    2023-08-22
    关键字 unix django
  • vue3自定义插件的作用场景及使用方法是什么
    本篇内容主要讲解“vue3自定义插件的作用场景及使用方法是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue3自定义插件的作用场景及使用方法是什么”吧!插件的作用场景在vue2的插件那篇文...
    99+
    2023-07-05
  • 基于Java递归算法的封装解决方法是什么
    本篇内容介绍了“基于Java递归算法的封装解决方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、递归算法1、概念简介递归算法的核心...
    99+
    2023-06-02
  • 关于Opensuse双系统的问题和解决方法是什么
    这篇文章将为大家详细讲解有关关于Opensuse双系统的问题和解决方法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。今天干了件愚蠢的事情,稀里糊涂的就用openSUSE11.2修复自己...
    99+
    2023-06-16
  • 关于Centos7中Vscode无响应的问题及解决方法
    版本信息 虚拟机版本:VMware® Workstation 16 Pro 16.1.2 build-17966106 Linux系统:CentOS7 问题描述 在CentO...
    99+
    2024-04-02
  • Java Load接口在Linux中的应用场景是什么?
    Java Load接口是Java语言中一个重要的接口,其主要作用是在Java程序中加载动态库文件,以实现与本地C/C++代码的交互。在Linux操作系统中,Java Load接口的应用场景非常广泛,本文将着重探讨Java Load接口在L...
    99+
    2023-10-14
    load 接口 linux
  • Python中关于集合的介绍及用法是什么
    这期内容当中小编将会给大家带来有关Python中关于集合的介绍及用法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。  一、集合的含义及创建方法  集合(s...
    99+
    2024-04-02
  • thinkphp中in删除方法的使用和应用场景是什么
    这篇“thinkphp中in删除方法的使用和应用场景是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“thinkphp中i...
    99+
    2023-07-05
  • Oracle数据库中表锁定的常见场景及解决方案
    Oracle数据库中表锁定的常见场景及解决方案 在Oracle数据库中,表锁定是一个常见的数据库性能问题,当多个会话同时访问同一个表时,可能会导致表出现锁定,进而影响系统的性能和稳定。...
    99+
    2024-03-03
    解决方案 表锁定
  • java生产问题排查及解决方法是什么
    Java生产问题排查及解决方法主要包括以下几个步骤: 收集信息:当出现问题时,首先需要收集相关信息,包括错误日志、异常堆栈信息、...
    99+
    2023-10-27
    java
  • ASP中同步数组的操作方法及应用场景解析。
    ASP中同步数组的操作方法及应用场景解析 在ASP编程中,数组是一种非常常见的数据类型。数组是由一系列相同类型的元素组成的集合,这些元素可以按照一定的顺序访问。数组的使用可以使程序的编写更加简单、清晰,也可以提高程序的运行效率。然而,在实际...
    99+
    2023-11-04
    同步 数组 教程
  • Golang中乱码的原因及解决方法是什么
    这篇“Golang中乱码的原因及解决方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Golang中乱码的原因及解决方...
    99+
    2023-07-05
  • 分析MySQL中关于Bug的解决方法
    这篇文章主要介绍“分析MySQL中关于Bug的解决方法”,在日常操作中,相信很多人在分析MySQL中关于Bug的解决方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”分析My...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作