最近看了一些关于java性能优化方面的知识,作为个人总结,写下一些个人认为不错的东西.
1.垃圾回收 (GC Garbage Collection)
从 Thinking in java 中看到当一个对象被创建之后,对象和变量被放在(heap)堆内存中,它的引用和静态方法被放在(stack)栈中,然后JVM对它进行管理,回收内存空间
1).当一个对象在内存中永远不再被引用,对象的内存空间将被回收.如果一个对象在jvm中无法通过根集合(root set)到达时,这个对象就被成为垃圾对象.将被JVM释放掉
堆内存包括两个区域:新对象区域(New Object),老对象区域(old Object)
(1)新对象区域包含三个域:伊甸园区域(Eden),Form区域,To区域
伊甸园区域用来保存新的对象,就想一个堆栈.JVM对Eden中的对象进行检查,看是否有过期的对象,如果过期则回收,然后把其他对象拷贝到From中,在拷贝过程中如果状态改变则被放到To中.
(2)老对象区域中主要防治即将被释放内存的对象.
2.JVM中对象的生命周期
7个阶段:
1.Creation(创建)
2.Using(使用)
3.Invisible(不可见)
4.Unreachable(不可达)
5.Collected(可收集阶段)
6.Finalized(终结阶段)
7.Free(释放阶段)