Java内存释放心得
1 如果一块内存区域能够重复利用,最好不要申请新的。这个内存区域有可能是系统的一个类,自己的一个内部有数组元素,或者能够放大量数据的结构。
2 最好不要在循环里面申请内存,循环越大,越坏事。换句话说,申请内存频率别太高。好比一个人每顿吃两碗饭正好,身体的消化系统可以承受,如果让他一顿把十顿的都吃掉,不胀死才怪!
3 让每个实例对象的生命周期尽量短一些,尤其是那些要占用大内存的。因为垃圾收集器的算法优先考虑那些生命周期短的。和多任务操作系统调度进程,分配cpu的原理类似。
4 对一块大的内存的引用层次不要弄得太复杂,垃圾收集器对这种类型的内存快收集起来,也是比较麻木的。
5 养成好习惯,不用的对象显式设置成null。在希望收集层次比较复杂的对象的时候,先将该对象内部保存的其他引用都置null了,效果会好一些。
6 最后一招,使用弱引用,虚引用。不过,一般出了内存问题,都是前5条做得不好,需要用到6的少之又少。
相关文档:
通常情况下,我们在写一个类时,一般会赋予它一个或几个public的构造函数,让外部程序能够创建对象. 然而,在effective java 中,从另一个角度告诫我们在使用public的构造函数前,先考虑用public 的静态函数来创建对象.
其优点如下:
1. 一个静态的工厂函数,可以取不同的名字. 而构造函数的名字只能与类同名.
......
今天没有什么大事,想找java的资料就来到这里了!感觉还是Csdn的资料比较多。
最近换了工作,因为一些原因以前的工作。我以前是做C的,现在因为工作的需要却要做java。
现在大概看了一点java的东东,感觉java的用途很广,也很优秀。但是相比于C却缺少了一些透明度,但也可能正是因为这些透明
才使的它发展到现在吧。java ......
java 5开始引入了autoboxing 和auto-unboxing机制,方便了基本类型和其对应的wrapper类型的转换。比如我们可以直接把一个基本类型的值赋给其wrapper类型,反之亦然;可以把一个基本类型直接放入容器里,封装的过程由编译器来完成;调用方法的时候可以直接匹配参数autoboxing和auto-unboxing之后的版本。
这个过程 ......
package com.whlongyi.sys.blob.bean;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
im ......