易截截图软件、单文件、免安装、纯绿色、仅160KB

Java内存释放心得

1 如果一块内存区域能够重复利用,最好不要申请新的。这个内存区域有可能是系统的一个类,自己的一个内部有数组元素,或者能够放大量数据的结构。
2 最好不要在循环里面申请内存,循环越大,越坏事。换句话说,申请内存频率别太高。好比一个人每顿吃两碗饭正好,身体的消化系统可以承受,如果让他一顿把十顿的都吃掉,不胀死才怪!
3 让每个实例对象的生命周期尽量短一些,尤其是那些要占用大内存的。因为垃圾收集器的算法优先考虑那些生命周期短的。和多任务操作系统调度进程,分配cpu的原理类似。
4 对一块大的内存的引用层次不要弄得太复杂,垃圾收集器对这种类型的内存快收集起来,也是比较麻木的。
5 养成好习惯,不用的对象显式设置成null。在希望收集层次比较复杂的对象的时候,先将该对象内部保存的其他引用都置null了,效果会好一些。
6 最后一招,使用弱引用,虚引用。不过,一般出了内存问题,都是前5条做得不好,需要用到6的少之又少。


相关文档:

java读书笔记整理:一切都是对象

一.用引用操纵对象
       每种编程语言都有自己的数据操纵方式。有时候,程序员必须注意将要处理的数据是什么类型。你是直接操纵对象,还是用某种基于特殊语法的间接表示(例如C和C++里的指针)在操纵对象?
 
       所有的这一切在java里都得到了简化 ......

java中的autoboxing和auto unboxing

  java 5开始引入了autoboxing 和auto-unboxing机制,方便了基本类型和其对应的wrapper类型的转换。比如我们可以直接把一个基本类型的值赋给其wrapper类型,反之亦然;可以把一个基本类型直接放入容器里,封装的过程由编译器来完成;调用方法的时候可以直接匹配参数autoboxing和auto-unboxing之后的版本。
 这个过程 ......

java实现数组的所有组合

细节上需要改进。
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 ......

Java的注释规范

一、背景
1、当我们第一次接触某段代码,但又被要求在极短的时间内有效地分析这段代码,我们需要什么样的注释信息?
2、怎么样避免我们的注释冗长而且凌乱不堪呢?
3、在多人协同开发、维护的今天,我们需要怎么样的注释来保证高质、高交的进行开发和维护工作呢?
二、意义
程序中的注释是程序设计者与程序阅读者 ......

Java开发Oracle数据库的ORA 01000错误解析

很多朋友在Java开发中,使用Oracle数据库的时候,经常会碰到有ORA-01000: maximum open cursors exceeded.的错误。
实际上,这个错误的原因,主要还是代码问题引起的。
ora-01000: maximum open cursors exceeded.
表示已经达到一个进程打开的最大游标数。
这样的错误很容易出现在Java代码中的主要原因是:Java代码在执 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号