JVM学习笔记3:内存溢出的十个场景

2023-10-27

内存溢出的十个场景

JVM运行时首先需要类加载器(classLoader)加载所需类的字节码文件。加载完毕交由执行引擎执行,在执行过程中需要一段空间来存储数据(类比CPU与主存)。这段内存空间的分配和释放过程正是我们需要关心的运行时数据区。内存溢出的情况就是从类加载器加载的时候开始出现的,内存溢出分为两大类:OutOfMemoryError和StackOverflowError。以下举出10个内存溢出的情况,并通过实例代码的方式讲解了是如何出现内存溢出的。

1.java堆内存溢出

当出现java.lang.OutOfMemoryError:Java heap space异常时,就是堆内存溢出了。

  • 1.问题描述:

       设置的jvm内存太小,对象所需内存太大,创建对象时分配空间,就会抛出这个异常。(流量/数据峰值,应用程序自身的处理存在一定的限额,比如一定数量的用户或一定数量的数据。而当用户数量或数据量突然激增并超过预期的阈值时,那么就会峰值停止前正常运行的操作将停止并触发java . lang.OutOfMemoryError:Java堆空间错误)

  • 2.示例代码

编译以下代码,执行时jvm参数设置为-Xms20m -Xmx20m

以上这个示例,如果一次请求只分配一次5m的内存的话,请求量很少垃圾回收正常就不会出错,但是一旦并发上来就会超出最大内存值,就会抛出内存溢出。

  • 3.解决方法

首先,如果代码没有什么问题的情况下,可以适当调整-Xms和-Xmx两个jvm参数,使用压力测试来调整这两个参数达到最优值。

其次,尽量避免大的对象的申请,像文件上传,大批量从数据库中获取,这是需要避免的,尽量分块或者分批处理,有助于系统的正常稳定的执行。

最后,尽量提高一次请求的执行速度,垃圾回收越早越好,否则,大量的并发来了的时候,再来新的请求就无法分配内存了,就容易造成系统的雪崩。

2.java堆内存泄漏

  • 1.问题描述

Java中的内存泄漏是一些对象不再被应用程序使用但垃圾收集无法识别的情况。因此,这些未使用的对象仍然在Java堆空间中无限期地存在。不停的堆积最终会触发java . lang.O

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JVM学习笔记3:内存溢出的十个场景 的相关文章

随机推荐

  • 弱网的概念以及弱网测试

    什么是弱网测试 在当今移动互联网盛行的时代 网络的形态除了有线连接 还有2G 3G Edge 4G Wifi等多种手机网络连接方式 不同的协议 不同的制式 不同的速率 使移动应用运行的场景更加丰富 从测试角度来说 需要额外关注的场景就远不止
  • SpringBoot日志配置【详解】

    文章目录 前言 1 为什么使用Logback 2 Logback使用 2 1 添加依赖 2 2 默认配置 3 logback spring xml详解 3 1 configuration元素 3 2 logger 元素 3 3 root 元
  • 购物商城---页面缓存oscached

    流程图 web xml
  • VC++使用HOOK API 屏蔽PrintScreen键截屏以及QQ和微信默认热键截屏

    转载 http blog csdn net easysec article details 8833457 转载 http www vckbase com module articleContent php id 567 title 用VS
  • 离线安装Docker镜像

    部分线上服务器无法连接公网 或者服务器下载镜像比较慢 遇到这种情况要怎么解决 我们可以在联网的本机或服务器上 将已经下载好的镜像导出 然后导入到没有网络的服务器上 通过Docker加载 例如 这里有一个镜像grafana loki 2 2
  • 订单系统开发

    一 订单系统基本框架的搭建 1 创建maven工程 pom xml文件内容如下
  • WSA with Magisk Root安装配置教程(2023.5)

    前言 最近正式走上了安卓逆向的道路 刚开始尝试了各种模拟器 雷电 夜神 及其海外版 并且安装配置了多次magisk 倒不是说这些模拟器的体验有多差 主要还是不能与 Windows Hype V 共存导致无法使用 WSL 这点让我无法接受 s
  • markdown语法最全汇总

    一 markdown简介 注 如果对markdown有一定了解 可以略过此处 第一章主要对markdown基础知识做个补充 摘自菜鸟教程此处原文档 博客原地址 欢迎收藏访问 1 1 markdown背景 1 markdown是一种轻量级标记
  • 一枚芯片的实际成本是多少?(1)

    芯片的硬件成本构成 芯片的成本包括芯片的硬件成本和芯片的设计成本 芯片硬件成本包括晶片成本 掩膜成本 测试成本 封装成本四部分 像ARM阵营的IC设计公司要支付给ARM设计研发费以及每一片芯片的版税 但笔者这里主要描述自主CPU和Intel
  • shiny教程一 -- shiny入门

    Shiny是一个R软件包 可轻松从R直接构建交互式Web应用程序 本课程将使您立即开始构建Shiny应用程序 如果还未安装Shiny软件包 打开R会话窗 确保联网状态 然后运行 install packages shiny Shiny软件包
  • vue 中click.stop的用法

    click stop 阻止点击事件继续传播 场景 在table中使用 点击当前行 当前行被勾选 但是点击当前行中按钮或点击事件时 使用此方法 则在触发当前点击事件后 阻止行的选中事件 使用 html
  • input“输入框”常见问题及解决方法

    1 ios中 输入框获得焦点时 页面输入框被遮盖 定位的元素位置错乱 当页input存在于吸顶或者吸底元素中时 用户点击输入框 输入法弹出后 fiexd失效 页面中定位好的元素随屏幕滚动 针对这个问题 我们一起来看下以下几种方案 方案一 W
  • FOXBORO FBM232 P0926GW 自动化控制模块

    Foxboro FBM232 P0926GW 是 Foxboro 福克斯博罗 自动化控制系统的一部分 通常用于监测和控制工业过程 以下是关于这种类型的自动化控制模块可能具有的一些常见功能 数字输入通道 FBM232 P0926GW 控制模块
  • 鸿蒙系统 服务器,鸿蒙开发之环境准备【1】-基于Deepin20操作系统的编译服务器环境搭建遇到的问题及解决方式...

    Hi3861 code 1 0 python build py wifiiot 196 197 ACTION vendor hisi hi3861 hi3861 run wifiiot scons build lite toolchain
  • vscode launch.json 常用配置

    Use IntelliSense to learn about possible attributes Hover to view descriptions of existing attributes For more informati
  • 毕业设计-基于机器视觉的智能安检系统设计 -OpenCV

    目录 前言 课题背景和意义 实现技术思路 一 智能安检机概述 二 嵌入式控制系统 三 图像处理模块设计 实现效果图样例 最后 前言 大四是整个大学期间最忙碌的时光 一边要忙着备考或实习为毕业后面临的就业升学做准备 一边要为毕业设计耗费大量精
  • Blender石头雕刻

    1 建立一个plane 选中一个点后ctrl I反选其他的点 然后删去 2 e挤出点 3 添加蒙皮skin修改器 4 全选所有点 ctrl a放大或缩小
  • Caffeine缓存不刷新问题

    一 先看问题代码 缓存管理器配置 import java util concurrent TimeUnit import org springframework cache CacheManager import org springfra
  • springboot同一个类里的方法之间调用事务不起作用

    今天在看项目代码的时候 发现在service层 有方法调用同类中的方法 SonarLint提示有bug 下图是我自己做测试时写的demo代码 经过测试发现 当A方法调用同类中带有 Transactional注解的B方法时 被 Transac
  • JVM学习笔记3:内存溢出的十个场景

    内存溢出的十个场景 JVM运行时首先需要类加载器 classLoader 加载所需类的字节码文件 加载完毕交由执行引擎执行 在执行过程中需要一段空间来存储数据 类比CPU与主存 这段内存空间的分配和释放过程正是我们需要关心的运行时数据区 内