今天看了一下java优化编程的第二章,感觉写的比较深入,几点感想,分享一下 1,Java虚拟机的内存管理机制是垃圾回收机制(Garbage Collection 简称:GC) 2,JVM管理两种类型的内存:堆内存(heap)和栈内存(stack)。堆内存用来存储程序在运行时创建或实例化的对象和变量,栈内存用来存储程序代码中声明为静态(static)的方法或者调用的非静态方法。 3,堆内存中所存储的对象可以被JVM自动回收,或者添加相关代码实现回收,不能通过其他手段来回收。 4,堆内存通常被分为两个区域:新对象(new object)区域与老对象(old boject)区域。被转入老对象区域的对象就变成了垃圾对象。JVM自动清理垃圾对象。不建议频繁强制系统垃圾回收。 5,JVM中对象的生命周期:创建阶段、应用阶段、不可视阶段、不可到达阶段、可收集阶段、终结阶段、释放阶段。 6,如果一个对象已经使用完毕,应主动将其设置为空(null),这样强制将对象置为空值,可以帮助JVM及时的发现这个垃圾对象,并且可以及时的回收该对象所占得系统资源。 7,避免在循环体中创建对象,即使对象占用内存空间不大。 //避免这样的代码 //使用下面的方法 8,对象创建后的应用阶段系统至少维护着所有对象的一个强引用(Strong Reference),除非显示的使用了软引用(Soft Reference)。Soft Reference的引进,使Java应用可以更好的管理内存,稳定系统,防止内存溢出,避免系统崩溃。使用如下: import java.lang.ref.SoftReference; 9,主动清除对象引用的方法,即将不用对象置为null,可以加速JVM对垃圾内存的回收,如果通过显示调用System.gc(),系统执行时间不见得会减少,存在弊端,应在必要的时候再用。如下实例: //Test gc() java -verbosegc A 10,在编译时使用命令:javac -g:none A.java,编译出来的.class文件最小。
参见Java 优化编程 林胜利,王坤茹 编著,电子工业出版社。 |
Java内存管理
最新推荐文章于 2023-05-30 13:31:27 发布