zoukankan      html  css  js  c++  java
  • 可能出现OOM的区域和情况分析

    1. MetaSpace

    加载太多类 metaspace 塞不下的时候会导致 full gc,连带回收老年代空间 但是类的元数据要被回收掉的条件比较苛刻的

    • 对应的类加载器要先被回收了
    • 类的所有实例对象要被回收

    所以回收效果比较差,塞不下了 导致内存溢出

    1.1元数据区出现oom的原因可能有

    1. 没有设置 metaspace 大小,默认的设置只有几十m 太小了 => 通常设置为: -XX:MaxMeataspaceSize=512M -XX:MetaspaceSize=512M 就够了
    2. 系统内使用了 cglib 之类的技术动态生成类,代码没有控制好导致生成过多类

    2. Java虚拟机栈

    方法调用太深, 一般是递归、循环调用

    3. 堆内存

    生成的对象太多/太大/太快,heap 满了 full gc后还是放不下
    a. 系统并发太高,请求量太高 => 加机器
    b. 存在内存泄露问题,不用的对象删除引用,导致内存回收不掉

    本文来自博客园,作者:mushishi,转载请注明原文链接:https://www.cnblogs.com/mushishi/p/14553129.html

  • 相关阅读:
    TabControl
    Loading
    Dialog
    Combobox
    Markdown编辑器Editor.md使用方式
    XSS攻击
    跨域解决方案及实现
    angular4 自定义表单组件
    angular4 Form表单相关
    js 详解setTimeout定时器
  • 原文地址:https://www.cnblogs.com/mushishi/p/14553129.html
Copyright © 2011-2022 走看看