JVM

JDK8 

堆区

young     eden  s0+s1    eden+survivor s0/s1  from/to

 new出来的对象首先分配在eden区,当eden区满了会触发第一次GC;

 活的==》s0(from)

再次触发GC:eden+from=>s1(to)

对象年龄+1  15  MaxTenuringThreshold  ==>老年代

 面试题  JVM 调优、参数配置

oracle

-XX:SurvivorRatio=8 eden:s1+s0比例

-XX:NewRatio=2 新生代占比

-XX: MaxTenuringThreshold=15 =0(年轻代对象直接进入老年代)

 

old

 

非堆区  Metaspace  (PermGen)

Metaspace:Class package Method  Filed 字节码  常量池  压缩

    独立于堆区之外

CCS   CodeCache

 

JMM (java内存模型)

voletile 关键字  保证一致性 原子性 可见性

确定哪些对象会被回收

   1)引用计数   父类引用指向子类对象  (多态)

          A a = new A()  a.eat() 

          B b= new B()   b.set(a)

          循环引用

 2) 枚举根节点可达性

                                  GC  Roots

谈谈你的GC算法的了解

   标记-清除 Mark-Sweep

       标记 GC Roots==》找到存活的对象   标记

       清除:将没有标记的对象全部干掉

      缺点: 内存碎片

   复制  Copy

        内存划分为2个区域 同一时间点只有一个是活动的

         GC 线程会将活动区域的存活对象全部复制到空闲区域,排序

         新生代GC用的比较多  

 缺点:真正能用的内存只有一半

 

   标记-整理 Mark-Compact

   分代 (综合使用)     

        新生代:复制

        老年代:标记清除/标记整理        

谈谈你对 GC Collect的看法

结合Spark你来说说你线上遇到过得OOM异常以及解决方案

 1)Spark内存模型

 2)Spark架构

 3)JVM OOM 

     StackOverflowError

     Java Heap  Space  OutofMemory   -xms -xmx  Executor

    unable to create native thread OutofMemory

    ulimit -u  4096    3701(挂掉)   其他线程也在使用

etc/secutity/limits.d 

    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值