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数。并行收集线程数。
-XX:SurvivorRatio=3:新生代中又会划分为 Eden 区,from Survivor、to Survivor 区。
要计算Eden区的大小,我们需要理解JVM的堆内存配置以及新生代(Young Generation)的组成。
在这个例子中,与新生代(Young Gen)相关的主要参数是 -Xmn500M
,它表示整个新生代的大小为500MB。
新生代内部又分为 Eden 区和两个 Survivor 区(通常称为 S0 和 S1)。Survivor 区的大小与 Eden 区的大小之间有一个比例关系,由 -XX:SurvivorRatio
参数控制。这里 -XX:SurvivorRatio=3
表示 Eden 区与单个 Survivor 区的比例为 3:1。
这意味着整个新生代的大小可以被分成 3 + 1 + 1 = 5 份,其中 Eden 区占 3 份,两个 Survivor 区各占 1 份。
新生代总大小为 500MB,Eden 区占据的比例是 3/5,因此我们可以计算 Eden 区的大小如下:
所以 Eden 区的大小是 300MB,答案是 C. 300M。