首页 > 试题广场 >

假如某个JAVA进程的JVM参数配置如下:-Xms1G -X

[单选题]
假如某个JAVA进程的JVM参数配置如下:
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3,
请问eden区最终分配的大小是多少?
  • 64M
  • 500M
  • 300M
  • 100M

Xms 起始内存

Xmx 最大内存

Xmn 新生代内存

Xss 栈大小。 就是创建线程后,分配给每一个线程的内存大小

-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:设置持久代大小

收集器设置
-XX:+UseSerialGC:设置串行收集器
-XX:+UseParallelGC:设置并行收集器
-XX:+UseParalledlOldGC:设置并行年老代收集器
-XX:+UseConcMarkSweepGC:设置并发收集器
垃圾回收统计信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
并行收集器设置
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
并发收集器设置
-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。

发表于 2019-08-30 22:20:37 回复(69)
这是网易2016年在线笔试题中的一道选择题。 
先分析一下里面各个参数的含义: 
-Xms:1G , 就是说初始堆大小为1G 
-Xmx:2G , 就是说最大堆大小为2G 
-Xmn:500M ,就是说年轻代大小是500M(包括一个Eden和两个Survivor) 
-XX:MaxPermSize:64M , 就是说设置持久代最大值为64M 
-XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法 
-XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1
题目中所问的Eden区的大小是指年轻代的大小,直接根据-Xmn:500M和-XX:SurvivorRatio=3可以直接计算得出
500M*(3/(3+1+1)) 
=500M*(3/5) 
=500M*0.6 
=300M  
所以Eden区域的大小为300M。
发表于 2020-02-26 18:51:16 回复(9)
java -Xmx2G -Xms1G -Xmn500M -Xss128k
-
Xmx2G:设置JVM最大可用内存为2G。
-Xms1G
:设置JVM促使内存为1G。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn500M:设置年轻代大小为2G。整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小

-XX:SurvivorRatio=3:新生代中又会划分为 Eden 区,from Survivor、to Survivor 区。

其中 Eden 和 Survivor 区的比例默认是 8:1:1,当然也支持参数调整 -XX:SurvivorRatio=3的话就是3:1:1。
故该题为500*(3/5)=300M.


编辑于 2019-08-21 21:43:30 回复(3)
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3,
-Xms1G    设置Java堆最小值为1G    
-Xmx2G    设置Java堆最大值为2G
-Xmn500M    设置新生代大小为500M(一个Eden区,两个Survivor区)
-XX:MaxPermSize=64M    设置永久代大小为64M
-XX:+UseConcMarkSweepGC     设置使用CMS收集器
-XX:SurvivorRatio=3    设置Eden区与Survivor区大小的比例
本题看新生代大小,新生代为500M,三个区比例为3:1:1,很容易计算出Eden大小为300M
发表于 2019-08-22 22:49:45 回复(0)
发表于 2019-11-27 20:12:34 回复(0)
-Xms:设置Java程序启动时初始堆的大小(主要参数)
-Xmx: 设置Java程序能获得的最大堆的大小(主要参数)
-Xmn:堆中年轻代的大小
-XX:+UserConcMarkSweepGC:设置年老代为并发收集
-XX:SurvivorRatio=3. 年轻代中Eden与两个Survivor区的比值, 所以Eden:Survivor=3:2.
所以有500*(3/5)=300M
发表于 2020-07-24 19:34:54 回复(0)
参数解释:
-Xms1G :初始堆空间为1G 
-Xmx2G :指定最大堆空间为2G
-Xmn500M :指定堆空间的年轻代大小为500M(年轻代=Eden+Survivor)
-XX:MaxPermSize=64M:指定最大永久代为64M
-XX:+UseConcMarkSweepGC 使用CMS垃圾收集器
-XX:SurvivorRatio=3 指定堆的年轻代中Eden和Survivor区的比例,也就是Eden:Survivor(from):Survivor(to)=3:1:1
由-Xmn500M可知:eden=3/5*500M=300M
答案为C,
堆内存示意图:

发表于 2020-12-31 11:48:23 回复(0)
-Xms:1G , 就是说初始堆大小为1G
-Xmx:2G , 就是说最大堆大小为2G
-Xmn:500M ,就是说年轻代大小是500M(包括一个Eden和两个Survivor)
-XX:MaxPermSize:64M , 就是说设置持久代最大值为64M
-XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法
-XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1
————————————————
500M*(3/(3+1+1))
=500M*(3/5)
=500M*0.6
=300M
所以Eden区域的大小为300M。
发表于 2020-04-03 19:19:45 回复(0)
-Xms:1G , 就是说初始堆大小为1G  -Xmx:2G , 就是说最大堆大小为2G  -Xmn:500M ,就是说年轻代大小是500M(包括一个Eden和两个Survivor)  -XX:MaxPermSize:64M , 就是说设置持久代最大值为64M  -XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法  -XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1 题目中所问的Eden区的大小是指年轻代的大小,直接根据-Xmn:500M和-XX:SurvivorRatio=3可以直接计算得出 500M*(3/(3+1+1))  =500M*(3/5)  =500M*0.6  =300M   所以Eden区域的大小为300M。
发表于 2021-08-20 22:37:30 回复(0)
先分析一下里面各个参数的含义: 
-Xms:1G , 就是说初始堆大小为1G 
-Xmx:2G , 就是说最大堆大小为2G 
-Xmn:500M ,就是说年轻代大小是500M(包括一个Eden和两个Survivor) 
-XX:MaxPermSize:64M , 就是说设置持久代最大值为64M 
-XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法 
-XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1
题目中所问的Eden区的大小是指年轻代的大小,直接根据-Xmn:500M和-XX:SurvivorRatio=3可以直接计算得出
500M*(3/(3+1+1)) 
=500M*(3/5) 
=500M*0.6 
=300M  
所以Eden区域的大小为300M。
发表于 2021-06-17 23:30:25 回复(0)

区域划分图 
-Xmn500M:  
Eden+ S0+S1=500M    8:1:1
得Eden = 300M

New = Eden + S0 + S1
发表于 2021-03-30 08:55:25 回复(1)
看不懂看不懂,先Mark一下,以后技术到达这个高度了再来battle!!
发表于 2021-03-10 16:45:03 回复(2)
回头再看吧,太多了
发表于 2020-09-21 08:16:26 回复(0)
整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小
1) 首先,对于新生代:
新生代中又会划分为 Eden 区,from Survivor、to Survivor 区。
其中 Eden 和 Survivor 区的比例默认是 8:1:1,当然也支持参数调整 -XX:SurvivorRatio=3的话就是3:1:1;

2)-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3;

3)-XX:MaxPermSize=n:设置持久代大小。
编辑于 2020-05-14 02:45:42 回复(1)

Xms 起始内存

Xmx 最大内存

Xmn 新生代内存
SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2
所以,Eden的内存 = Xmn * 3 / (3+2) = 500 * 3/5 = 300
发表于 2019-09-25 21:58:12 回复(0)
500 / (3 + 1 + 1) * 3 => eden area size
发表于 2021-09-06 11:59:45 回复(0)
xms 其实堆内存 size xmx 最大堆内存 max xmn 新生代大小 new来记 xss 栈大小 stack来记 maxpermsize 永久代大小 看引文记 survivorratio eden和survivor区比例 例如为3是 3:1:1,幸存区都是1 newratio 新生代老年代比例 这个就比较奇怪了,新生代为1这里的数字指的是老年代的数字 一般老年代也更大一点
编辑于 2024-02-14 01:27:05 回复(0)
这有点难记住
发表于 2023-02-17 14:29:04 回复(0)
太多了 脑子要炸了
发表于 2023-01-17 21:07:03 回复(0)
发表于 2022-10-13 10:02:43 回复(0)