• jvm内存配置参数


    请看下面题目:
    对于jvm内存配置参数:
    -Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3
    其最小内存值和Survior区总大小分别是:
    a. 5120m,1024m
    b.5120m,2048m
    c.10240m,1024m
    d.10240m,2048m

    答案是:d.

    java memery model

    首先必须知道几个参数的含义:

    -Xmx :堆的最大值
    -Xms :堆的最小值
    -Xmn :堆年轻代大小
    -XXSurvivorRatio:Eden区和Survior区的占用比例.


    知识补充:
    VM内存区域总体分两类,heap区 和 非heap 区 。
    - heap区: 堆区分为Young Gen(新生代),Tenured Gen(老年代-养老区)。其中新生代又分为Eden Space(伊甸园)、Survivor Space(幸存者区)。
    - 非heap区: Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。


    为什么要区分新生代和老生代?
    堆中区分的新生代和老年代是为了垃圾回收,新生代中的对象存活期一般不长,而老年代中的对象存活期较长,所以当垃圾回收器回收内存时,新生代中垃圾回收效果较好,会回收大量的内存,而老年代中回收效果较差,内存回收不会太多。


    不同代采用的算法区别?
    基于以上特性,新生代中一般采用复制算法,因为存活下来的对象是少数,所需要复制的对象少,而老年代对象存活多,不适合采用复制算法,一般是标记整理和标记清除算法。
    因为复制算法需要留出一块单独的内存空间来以备垃圾回收时复制对象使用,所以将新生代分为eden区和两个survivor区,每次使用eden和一个survivor区,另一个survivor作为备用的对象复制内存区。

    上面铺垫了那么多,现在进入正题:
    我们只需要知道Survior区有两个,就是图中的S0和S1,而Eden区只用一个, -XXSurvivorRatio参数是Eden区和单个Survior区的比例,所以应该有(3+1+1)*Survior=5012m,图中问的是Survior总大小(需乘2),显然是d.

  • 相关阅读:
    UI-iOS开发中@property的属性weak nonatomic strong readonly等介绍
    UIView之userInteractionEnabled属性介绍
    UI-target...action设计模式,手势识别器.UIimageview
    UI-事件处理
    IOS开发—事件处理,触摸事件,UITouch,UIEvent,响应者链条,手势识别
    UI-事件,触摸与响应者链(一)
    第47月第11天 iOS 文件下载Download,支持断点续传、后台下载、设置下载并发数
    第47月第10天 telnet rpm包安装
    第47月第5天 openresty
    第47月第4天 arkit录制
  • 原文地址:https://www.cnblogs.com/Spider-spiders/p/9312239.html
Copyright © 2020-2023  润新知