1. JVM内存参数
要求
-  熟悉常见的 JVM 参数,尤其和大小相关的 
堆内存,按大小设置
 解释:
解释:
-  -Xms 最小堆内存(包括新生代和老年代) 
-  -Xmx 最大堆内存(包括新生代和老年代) 
-  通常建议将 -Xms 与 -Xmx 设置为大小相等,即不需要保留内存,不需要从小到大增长,这样性能较好 
-  -XX:NewSize 与 -XX:MaxNewSize 设置新生代的最小与最大值,但一般不建议设置,由 JVM 自己控制 
-  -Xmn 设置新生代大小,相当于同时设置了 -XX:NewSize 与 -XX:MaxNewSize 并且取值相等 
-  保留是指,一开始不会占用那么多内存,随着使用内存越来越多,会逐步使用这部分保留内存。下同 
堆内存,按比例设置

解释:
-  -XX:NewRatio=2:1 表示老年代:新生代 表示老年代占两份,新生代占一份 
-  -XX:SurvivorRatio=4:1 表示新生代中eden区与survivor区的比例,表示新生代分成六份,伊甸园占四份,from 和 to 各占一份 
元空间内存设置
 
解释:
-  class space 存储类的最基本的信息(如类的名称、类的方法入口),最大值受 -XX:CompressedClassSpaceSize(默认是1个G) 控制 
-  non-class space 存储除类的基本信息以外的其它信息(如方法字节码、注解等) 
-  class space 和 non-class space 总大小受 -XX:MaxMetaspaceSize 控制,默认没有上限,直接使用电脑的物理内存 
注意:
-  这里 -XX:CompressedClassSpaceSize 这段空间还与是否开启了指针压缩有关,这里暂不深入展开,可以简单认为指针压缩默认开启 
代码缓存(CodeCache)内存设置

解释:
- 机器码就是存在CodeCache里面的,代码缓存区就是用来缓存编译后的机器码的。
-  如果 -XX:ReservedCodeCacheSize < 240m,所有优化机器代码不加区分存在一起 
-  否则,分成三个区域(图中笔误 mthod 拼写错误,少一个 e) -  non-nmethods - JVM 自己用的代码 
-  profiled nmethods - 部分优化的机器码 
-  non-profiled nmethods - 完全优化的机器码 
 
-  
线程内存设置

- -Xss:控制每个线程(也就是虚拟机栈)占用的内存的。
- 如果不设置,它的大小是跟操作系统有关,如果是64位的Linux操作系统,每个线程晖占用1M的内存。



















