首页 > 系统相关 >面经-虚拟机-内存溢出

面经-虚拟机-内存溢出

时间:2022-08-26 14:56:01浏览次数:54  
标签:导致 队列 虚拟机 面经 任务 线程 内存 溢出

内存溢出

项目中什么情况下会内存溢出,怎么解决的

1.误用固定大小线程池

当前线程任务超时后,其余任务将被加入任务队列中,任务对象所耗费的内存会导致整个堆内存耗尽,导致内存溢出异常。

解决方法:

不要用工具类提供的线程池来创建线程池。而是使用线程池时自己使用线程池的构造方法,根据实际情况设置一个有大小限制的任务队列。超过任务队列大小时会报错,但是不会导致内存溢出。

2.误用带缓冲线程池

线程数没有上限,线程数耗尽了内存资源导致资源溢出。解决方法同1.

解决方法:

不要用工具类提供的线程池来创建线程池。而是使用线程池时自己使用线程池的构造方法,根据实际情况设置一个有大小限制的任务队列。超过任务队列大小时会报错,但是不会导致内存溢出。

3.查询数据量太大导致内存溢出

如果直接查询的话商品量过多,占用内存过大,而且可能很多人同一时间查。

解决方法:

使用分页查询,一次查几十条。

4.动态生成类导致的内存溢出

循环动态生成类,运行一千多次的时候元空间出现内存溢出。一直调用类导致对象不能回收,类加载器也不能回收,元空间的内存不能释放。耗尽后就会出现异常。

解决方法:

把静态变量对象变成局部变量,使用后就可以回收掉,类加载器以及动态生成的类都可以回收,释放元空间。

 

标签:导致,队列,虚拟机,面经,任务,线程,内存,溢出
From: https://www.cnblogs.com/lysboke/p/16627537.html

相关文章

  • 一文了解.Net的CLR、GC内存管理
    一文了解.Net的CLR、GC内存管理微软官方文档对内存管理和CLR的概述什么是托管代码?托管代码就是执行过程交由运行时管理的代码。在这种情况下,相关的运行时称为公共......
  • 静态static关键字修饰成员方法和内存图
    静态static关键字修饰成员方法一旦使用static修饰成员方法,那么就成为了静态方法,静态方法不属于对象,而是属于类的如果没有static关键字,那么必须首先创建对象,然后通过对象......
  • Kubernetes Container、Pod、Namespace内存及CPU限制
        如果运行的容器没有定义资源(memory、CPU)等限制,那么该容器可以使用宿主机的最大可用资源,直到无资源可用而触发宿主机(OOMKiller),为保证容器资源合理利用,需要在nam......
  • 内存泄露,内存逃逸和内存溢出
    1内存溢出 系统已经不能再分配出你所需要的空间,比如系统现在只有1G的空间,但是你偏偏要2个G空间,这就叫内存溢出2内存泄漏: (MemoryLeak)强引用所指向的对象不会被回......
  • 22/8/25 深入理解计算机系统第九章 虚拟内存
    9.7案例:IntelCorei7/Linux内存系统见书5769.8Linux虚拟内存系统与进程相关的数据结构(比如:页表、task和mm结构、内核栈)对每个进程不同物理内存内核虚拟内存......
  • Kubernetes Container、Pod、Namespace内存及CPU限制
    Quota资源限制  对每个命名空间的资源消耗总量提供限制(在一个namespace下创建quota,就会只对当前namespace进行资源限制)。它可以限制命名空间中某种类型的对象的总数目上......
  • VM虚拟机
    VM虚拟机提示“此主机支持AMD-V,但AMD-V处于禁用状态”的解决方法重启电脑,长按DEL进入主板BOIS界面---CPU特性---找到SVMMode,将其修改为Enabled。Enabled......
  • PerfView专题 (第十一篇):使用 Diff 功能洞察 C# 内存泄漏增量
    一:背景去年GC架构师Maoni在(2021.NET开发者大会)[https://ke.segmentfault.com/course/1650000041122988/section/1500000041123017]上演示过PerfView的Diff......
  • 面经-虚拟机-JVM内存参数
    JVM堆内存参数:对于JVM内存配置参数:-Xmx10240m-Xms10240m-Xmn5120m-XX:SurvivorRatio=3其最小内存值和Survivor区总大小分别是?-Xmx10240mXmx:Java虚拟机最大内存10Gm......
  • 面经-虚拟机-jvm内存结构
    虚拟机-jvm内存结构    方法区:存放类加载时的方法堆:存放new出来的对象虚拟机栈:记录方法内的局部变量和方法参数等信息。程序计数器:记录main线程执行中执行其......