Java内存释放心得
1 如果一块内存区域能够重复利用,最好不要申请新的。这个内存区域有可能是系统的一个类,自己的一个内部有数组元素,或者能够放大量数据的结构。
2 最好不要在循环里面申请内存,循环越大,越坏事。换句话说,申请内存频率别太高。好比一个人每顿吃两碗饭正好,身体的消化系统可以承受,如果让他一顿把十顿的都吃掉,不胀死才怪!
3 让每个实例对象的生命周期尽量短一些,尤其是那些要占用大内存的。因为垃圾收集器的算法优先考虑那些生命周期短的。和多任务操作系统调度进程,分配cpu的原理类似。
4 对一块大的内存的引用层次不要弄得太复杂,垃圾收集器对这种类型的内存快收集起来,也是比较麻木的。
5 养成好习惯,不用的对象显式设置成null。在希望收集层次比较复杂的对象的时候,先将该对象内部保存的其他引用都置null了,效果会好一些。
6 最后一招,使用弱引用,虚引用。不过,一般出了内存问题,都是前5条做得不好,需要用到6的少之又少。
相关文档:
自定义异常 : 步骤:
一:创建一个类继承于Throwable或其子类;
二:添加构造方法;
三:在一个方法中使用throw抛出异常
四:在另一个方法中捕获并处理异常
示例:
一、 继承Throwable 类
public class MySecondException extends Throwable {
public MySecondException() {
s ......
Java的内存泄漏
===========================================================
作者: shwenwen(http://shwenwen.itpub.net)
发表于: 2009.06.04 10:38
分类: java开发技术
出处: http://shwenwen.itpub.net/post/34911/485404
---------------------------------------------------------------
不管用java C++ ......
细节上需要改进。
import java.util.*;
public class Map {
Vector<int[]> v = new Vector<int[]>();
Vector<Integer> vv = new Vector<Integer>();
Map() {
int[] array = { 1, 2, 3, 4, 5 };
Scanner s = new Scanner(System.in);
int x = s.nextInt();
pro(array, 0, x);
for(int i=0 ......
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Random;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutpu ......
java byte与char互转原理-转
一、字节和unicode
Java内核是unicode的,就连class文件也是,但是很多媒体,包括文件/流的保存方式是使用字节流的。因此Java要对这些字节流经行转化。 char是unicode的,而byte是字节。Java中 byte/char互转的函数在sun.io的包中间有。其中ByteToCharConverter类是中调度,可以用来告诉你, ......