第四条:避免创建重复的对象
4.1
String s = new String("haha"); // don't do this 该语句每次都会new 一个新的对象出来,在循环中将会new出一堆的新对象
String ss = "haha";这个方式新建的对象把放入JVM的池中,在循环中中再次调用时,不会new 一个新对象。
4.2
Boolean b = Boolean.valueOf("true"); 这个是利用静态工厂来获得对象,只会新建一个新的对象
Boolean b1 = new Boolean("true"); 通过构造方法来获得对象的方式则会新建一个对象
在新建一个类的时候,尽量使用对方提供的静态工厂来获得实例,因为在其中还可以做到延迟加载的效果。
4.3
对于一些不变的变量,特别是定义在循环中的变量,如果其值是不变,那么可以考虑设置为static final 。
在static 块中进行赋值。能够大大减少系统的开销。至少可以减少100倍的耗时。在1000000次循环的情况下。
4.4
对于现代的JVM来说,小对象的创建和回收是非常廉价的,建立多使用。不过在循环中例外。
第五条:消除过期的对象引用
例如说在一个栈中,我们pop一个元素后,在数组中指向该对象的引用起始已经是无效了,但是JVM不知道,还在这个数组中保持着对该对象的引用,不会去清理该片内存,如果一直操作这个栈的话就可能会引起内容泄露。
良好的做法就是设置数组pop的这个位置的引用指向null。
即,只要一个类自己管理一片内容的话,就需要考虑内存泄露的问题。
内存泄露还有可能就是缓存
第六条:避免使用终结函数
暂时没看明白
4.1
String s = new String("haha"); // don't do this 该语句每次都会new 一个新的对象出来,在循环中将会new出一堆的新对象
String ss = "haha";这个方式新建的对象把放入JVM的池中,在循环中中再次调用时,不会new 一个新对象。
4.2
Boolean b = Boolean.valueOf("true"); 这个是利用静态工厂来获得对象,只会新建一个新的对象
Boolean b1 = new Boolean("true"); 通过构造方法来获得对象的方式则会新建一个对象
在新建一个类的时候,尽量使用对方提供的静态工厂来获得实例,因为在其中还可以做到延迟加载的效果。
4.3
对于一些不变的变量,特别是定义在循环中的变量,如果其值是不变,那么可以考虑设置为static final 。
在static 块中进行赋值。能够大大减少系统的开销。至少可以减少100倍的耗时。在1000000次循环的情况下。
4.4
对于现代的JVM来说,小对象的创建和回收是非常廉价的,建立多使用。不过在循环中例外。
第五条:消除过期的对象引用
例如说在一个栈中,我们pop一个元素后,在数组中指向该对象的引用起始已经是无效了,但是JVM不知道,还在这个数组中保持着对该对象的引用,不会去清理该片内存,如果一直操作这个栈的话就可能会引起内容泄露。
良好的做法就是设置数组pop的这个位置的引用指向null。
即,只要一个类自己管理一片内容的话,就需要考虑内存泄露的问题。
内存泄露还有可能就是缓存
第六条:避免使用终结函数
暂时没看明白