|
@@ -2,7 +2,7 @@
|
|
|
|
|
|
---
|
|
|
|
|
|
-####一、jvm参数
|
|
|
+#### 一、jvm参数
|
|
|
|
|
|
* -Xms
|
|
|
|
|
@@ -21,7 +21,7 @@
|
|
|
1. Xmn用于设置新生代的大小。过小会增加Minor GC频率,过大会减小老年代的大小。一般设为整个堆空间的1/4或1/3.
|
|
|
2. XX:SurvivorRatio用于设置新生代中survivor空间(from/to)和eden空间的大小比例;
XX:TargetSurvivorRatio表示,当经历Minor GC后,survivor空间占有量(百分比)超过它的时候,就会压缩进入老年代(当然,如果survivor空间不够,则直接进入老年代)。默认值为50%。
3. 为了性能考虑,一开始尽量将新生代对象留在新生代,避免新生的大对象直接进入老年代。因为新生对象大部分都是短期的,这就造成了老年代的内存浪费,并且回收代价也高(Full GC发生在老年代和方法区Perm).
|
|
|
4. 当Xms=Xmx,可以使得堆相对稳定,避免不停震荡
|
|
|
-
5. 一般来说,MaxPermSize设为64MB可以满足绝大多数的应用了。若依然出现方法区溢出,则可以设为128MB。若128MB还不能满足需求,那么就应该考虑程序优化了,减少**动态类**的产生。
####二、垃圾回收
|
|
|
+
5. 一般来说,MaxPermSize设为64MB可以满足绝大多数的应用了。若依然出现方法区溢出,则可以设为128MB。若128MB还不能满足需求,那么就应该考虑程序优化了,减少**动态类**的产生。
#### 二、垃圾回收
|
|
|
**垃圾回收算法:**
|
|
|
* 引用计数法:会有循环引用的问题,古老的方法;
* Mark-Sweep:根可达判断,最大的问题是空间碎片(清除垃圾之后剩下不连续的内存空间);
|
|
|
* Copying:对于短命对象来说有用,否则需要复制大量的对象,效率低。**如Java的新生代堆空间中就是使用了它(survivor空间的from和to区);**
* Mark-Compact:对于老年对象来说有用,无需复制,不会产生内存碎片
**GC考虑的指标**
|