首页 > 试题广场 >

对于JVM内存配置参数:-Xmx10240m -Xms102

[单选题]
对于JVM内存配置参数:
-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3
,其最小内存值和Survivor区总大小分别是()
  • 5120m,1024m
  • 5120m,2048m
  • 10240m,1024m
  • 10240m,2048m
推荐
D
-Xmx:最大堆大小
-Xms:初始堆大小
-Xmn:年轻代大小
-XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值
年轻代5120m, Eden:Survivor=3,Survivor区大小=1024mSurvivor区有两个,即将年轻代分为5份,每个Survivor区占一份),总大小为2048m。
-Xms初始堆大小即最小内存值为10240m


编辑于 2015-01-30 17:48:37 回复(36)
-Xmx10240m:代表最大堆
 -Xms10240m:代表最小堆
 -Xmn5120m:代表新生代
 -XXSurvivorRatio=3:代表Eden:Survivor = 3    根据Generation-Collection算法(目前大部分JVM采用的算法),一般根据对象的生存周期将堆内存分为若干不同的区域,一般情况将新生代分为Eden ,两块Survivor;    计算Survivor大小, Eden:Survivor = 3,总大小为5120,3x+x+x=5120  x=1024
新生代大部分要回收,采用Copying算法,快!
老年代 大部分不需要回收,采用Mark-Compact算法

发表于 2016-08-24 15:47:48 回复(32)
发表于 2016-07-18 19:32:14 回复(9)
-Xmx10240最大堆内存为10240M,-Mms为初始化堆内存,-Xmn为年轻区分配内存,-XXSurvivorRatio=3,设置年轻区的Edan:fromSurvivor:toSurvivor=3:1:1,年轻区默认有两个survivor的中间区。
发表于 2016-06-09 15:45:18 回复(0)
-Xms -Xmx分别设置堆的最小值和最大值,如果要设置成堆的大小可变,那么可以将最大值和最小值设置成不一样,如果要将堆大小固定,那么只需将最大值和最小值设置成一样的就行。
jvm中分为堆和方法区
又进一步分为新生代和老年代
方法区为永久代
堆中区分的新生代和老年代是为了垃圾回收,新生代中的对象存活期一般不长,而老年代中的对象存活期较长,所以当垃圾回收器回收内存时,新生代中垃圾回收效果较好,会回收大量的内存,而老年代中回收效果较差,内存回收不会太多。
基于以上特性,新生代中一般采用复制算法,因为存活下来的对象是少数,所需要复制的对象少,而老年代对象存活多,不适合采用复制算法,一般是标记整理和标记清除算法
因为复制算法需要留出一块单独的内存空间来以备垃圾回收时复制对象使用,所以将新生代分为eden区和两个survivor区,每次使用eden和一个survivor区,另一个survivor作为备用的对象复制内存区。
综上:
-Xmn设置了新生代的大小为5120m,而-XXSurvivorRatio=3,所有将新生代共分成5分,eden占三份,survivor占两份,每份1/5

编辑于 2016-08-11 21:13:03 回复(10)
D
-Xms10240m 初始堆大小即最小内存值
XXSurvivorRatio=3,即Eden:FromSurvivor:ToSurvivor=3:1:1;所以Survivor一共是2048
发表于 2015-04-08 10:58:08 回复(3)
-Xmx:最大堆大小   |    -Xms:初始堆大小   |    -Xmn:年轻代大小
说明:年轻代是由 Eden区Survivor区 两部分组成的堆内存区域。
-XXSurvivorRatio=3 表示的含义是:Eden与Survivor的占用比例为 3:1。
也就是说,一个survivor区占用 1/3 的Eden内存,而新生代中都有2个survivor,
所以survivor总共占用新生代内存的 2/5,同时Eden与新生代的占比则为 3:5。
--------------------------------------- 分割线 ----------------------------------------------
 - 知识补充:JVM
存区域总体分两类,heap区 和 非heap 区 
 - heap区:  Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。
 - 非heap区:  Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。
发表于 2016-05-23 18:26:40 回复(2)
常见配置汇总
  1. 堆设置
    • -Xms:初始堆大小
    • -Xmx:最大堆大小
    • -XX:NewSize=n:设置年轻代大小
    • -XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
    • -XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
    • -XX:MaxPermSize=n:设置持久代大小
  2. 收集器设置
    • -XX:+UseSerialGC:设置串行收集器
    • -XX:+UseParallelGC:设置并行收集器
    • -XX:+UseParalledlOldGC:设置并行年老代收集器
    • -XX:+UseConcMarkSweepGC:设置并发收集器
  3. 垃圾回收统计信息
    • -XX:+PrintGC
    • -XX:+PrintGCDetails
    • -XX:+PrintGCTimeStamps
    • -Xloggc:filename
  4. 并行收集器设置
    • -XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
    • -XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
    • -XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
  5. 并发收集器设置
    • -XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
    • -XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。
发表于 2017-08-15 10:29:30 回复(2)
XXSurvivorRatio=3表示survivor占年轻代区 -Xmn5120m的2/5所以得出2048m
发表于 2015-03-17 20:39:03 回复(0)
声明:这是从网上拼凑而成,有问题请指正(来源:http://blog.csdn.net/wy5612087/article/details/52369677
-Xmx:最大堆大小
-Xms:初始堆大小。(有的也叫最小堆大小,此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。)
-Xmn:年轻代大小
-XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值    
HotSpot JVM(注意是HotSpot  Jvm 不是所有jvm,某一种)把年轻代分为了三部分:1个Eden区和2个Survivor区(分别叫from和to)。一般情况下,新创建的对象都会被分配到Eden区(一些大对象特殊处理),这些对象经过第一次Minor GC后,如果仍然存活,将会被移到Survivor区。对象在Survivor区中每熬过一次Minor GC,年龄就会增加1岁,当它的年龄增加到一定程度时,就会被移动到年老代中。
所谓的 Copying算法 是空间换时间,而 Mark-Compact算法 则是时间换空间。 ( http://hllvm.group.iteye.com/group/topic/28594
因为年轻代中的对象基本都是朝生夕死的(80%以上),所以在年轻代的垃圾回收 算法 使用的是复制算法( Copying算法 )。
Copying算法:( http://edu.gamfe.com/tutor/d/14130.html 在GC开始的时候,对象只会存在于Eden区和名为“From”的Survivor区,Survivor区“To”是空的。紧接着进行GC,Eden区中所有存活的对象都会被复制到“To”,而在“From”区中,仍存活的对象会根据他们的年龄值来决定去向。年龄达到一定值(年龄阈值,可以通过-XX:MaxTenuringThreshold来设置)的对象会被移动到年老代中,没有达到阈值的对象会被复制到“To”区域。经过这次GC后,Eden区和From区已经被清空。这个时候,“From”和“To”会交换他们的角色,也就是新的“To”就是上次GC前的“From”,新的“From”就是上次GC前的“To”。不管怎样,都会保证名为To的Survivor区域是空的。Minor GC会一直重复这样的过程,直到“To”区被填满,“To”区被填满之后,会将所有对象移动到年老代中。
Mark-Compact算法: 在工作的时候则需要分别的mark与compact阶段,mark阶段用来发现并标记所有活的对象,然后compact阶段才移动对象,清楚未标记对象来达到compact的目的。如果compact方式是sliding compaction,则在mark之后就可以按顺序一个个对象“滑动”到空间的某一侧。因为已经先遍历了整个空间里的对象图,知道所有的活对象了,所以移动的时候就可以在同一个空间内而不需要多一份空间。

Eden:Survivor =  3:1    3x+x+x=5120    Survivor=2*x = 2048
发表于 2017-06-24 16:54:26 回复(1)
-Xmx:最大堆大小     ma x
-Xms:初始堆大小 s tart
-Xmn:  年轻代大小  n ew
编辑于 2020-02-17 22:43:05 回复(0)
- Xmx:表示虚拟机的最大可用内存,-Xms表示虚拟机的最小可用内存 ,-Xmn表示年轻代大小。-XXSurvivorRatio=3表示两个Survivor区与一个Eden区为2:3.Surivior=(2/5)*5120=2048.所以选D
发表于 2015-10-12 20:47:33 回复(0)

HotSpot JVM把年轻代分为了三部分:1个Eden区和2个Survivor区(分别叫from和to)。默认比例为8:1,为啥默认会是这个比例,接下来我们会聊到。一般情况下,新创建的对象都会被分配到Eden区(一些大对象特殊处理),这些对象经过第一次Minor GC后,如果仍然存活,将会被移到Survivor区。对象在Survivor区中每熬过一次Minor GC,年龄就会增加1岁,当它的年龄增加到一定程度时,就会被移动到年老代中。

因为年轻代中的对象基本都是朝生夕死的(80%以上),所以在年轻代的垃圾回收算法使用的是复制算法,复制算法的基本思想就是将内存分为两块,每次只用其中一块,当这一块内存用完,就将还活着的对象复制到另外一块上面。复制算法不会产生内存碎片。

在GC开始的时候,对象只会存在于Eden区和名为“From”的Survivor区,Survivor区“To”是空的。紧接着进行GC,Eden区中所有存活的对象都会被复制到“To”,而在“From”区中,仍存活的对象会根据他们的年龄值来决定去向。年龄达到一定值(年龄阈值,可以通过-XX:MaxTenuringThreshold来设置)的对象会被移动到年老代中,没有达到阈值的对象会被复制到“To”区域。经过这次GC后,Eden区和From区已经被清空。这个时候,“From”和“To”会交换他们的角色,也就是新的“To”就是上次GC前的“From”,新的“From”就是上次GC前的“To”。不管怎样,都会保证名为To的Survivor区域是空的。Minor GC会一直重复这样的过程,直到“To”区被填满,“To”区被填满之后,会将所有对象移动到年老代中。

发表于 2019-03-21 10:50:39 回复(0)
a
发表于 2015-03-23 22:01:47 回复(0)
堆内存=老年代+年轻代年轻代=新生代+存活代(注意存活代有两个:s0跟s1)堆内存的参数Xmx:堆内存的最大值Xms:堆内存的初始化值不值年轻代的参数Xmn:初始化内存以及最大内存比例参数newrate:老年代:年轻代survivorrate:新生代:存活代(注意 只是一个存活代)所以题目中对应的数值为-Xms:堆初始化内存10240m-Xmx:堆内存的最大值10240m内存最小值即为初始化值 10240m,排除ab选项;-Xmn年轻代的初始化值为5120m-XXSurvivorRate:年轻代中的新生代:一个存活代=3:1,因为有两个存活代所以存活代区Survivor区为整个年轻代的2/5,内存值为5120x2/5=2048选d
发表于 2021-10-10 00:08:07 回复(0)
完全不懂啊
发表于 2016-08-15 09:03:38 回复(0)
1.Xmx:最大堆大小
2.Xms:最小堆
3.Xmn:新生代
jvm分为新生代和老生代。新生代分为Edon和两块Survivor。XXSurvivorRatio=3说明Edon:Survivor=3(如果一个Survivor为x,则Edon为3x,则新生代大小=Edon加两块Survivo=3x+x+x),共占Xmn5120
发表于 2022-01-03 19:59:48 回复(0)
D
-Xmx:最大堆大小
-Xms:初始堆大小
-Xmn:年轻代大小
-XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值
年轻代5120m, Eden:Survivor=3,Survivor区大小=1024m(Survivor区有两个,即将年轻代分为5份,每个Survivor区占一份),总大小为2048m。
-Xms初始堆大小即最小内存值为10240m
发表于 2017-03-18 15:35:45 回复(0)
-Xmx1024m 最大堆内存  -Xms10240m初使堆内存  -Xmn5120m 年轻代
SurvivorRatio=3 表示  表示Eden:Survivor=3:2 一个Survivor区占整个年轻代的1/5 。一个是1024m,两个也 就是2048m.

就有一点疑问 初使堆内存可以比最大堆内存大???求解



发表于 2015-03-25 14:10:38 回复(2)
发表于 2022-09-21 10:46:57 回复(2)
 -XXSurvivorRatio=3  表示 eden:survivor1:survivor2 = 3:1:1
发表于 2020-10-27 21:11:40 回复(0)