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

JAVA优化编程


java代码优化编程
1.JVM 管理两种类型的内存:堆内存(heap),栈内存(stack),堆内在主要用来存储程序在运行时创建或实例化的对象与变量.而栈内存则是用来存储程序代码中声明为静态(static)(或非静态)的方法.
2.JVM 中对象的生命周期,创建阶段,应用阶段,不可视阶段,不可到达阶段,可收集阶段,终结阶
段,释放阶段
3.避免在循环体中创建对象,即使该对象点用内存空间不大.
for(int i=0;i<10000;++i){
Object obj = new Object();
System.out.println("obj="+obj);
}
应改成
Object obj = null;
for(int i=0;i<10000;++i){
obj = new Object();
System.out.println("obj="+obj);
}
4.软引用的主要特点是具有较强的引用功能.只有当内存不够的时候,才回收这类内存,因此在
内存足够的时候,它们通常不被回收.它可以用于实现一些常用资源的缓存,实现Cache 的功能
A a = new A();
SoftReference sr = new SoftReference(a);
a = null;
if(sr !=null){
a = sr.get();
}else{
a = new A();
sr = new SoftReference(a);
}
5.弱引用对象与Soft 引用对象最大不同就在于:GC 在进行回收时,需要通过算法检查是否回
收Soft 引用对象,而对于Weak 引用对象,GC 总是进行回收.
A a = new A();
WeakReference wr = new WeakReference(a);
a = null;
if(sr !=null){
a = wr.get();
}else{
a = new A();
wr = new WeakReference(a);
}
6.共享静态变量存储空间
7.有时候我们为了提高系统性能,避免重复耗时的操作,希望能够重用一些创建完成的对象,利
用对象池实现.类似JDBC 连接池.
8.瞬间值,序列化对象大变量时,如果此大变量又没有用途,则使用transient 声明,不序列化此变
量.同时网络传输中也不传输.
9.不要提前创建对象
void f(){
int i;
A a = new A();
if(....){
a.showMessage();
}
}
改成
void f(){
int i;
A a = null;
if(....){
//用到时才实例化
a = new A();
a.showMessage();
}
}
10 .(1)最基本的建议就是尽早释放无用对象的引用
A a = new A();
a = null; //当使用对象a 之后主动将其设置为空
(2)尽量少用finalize 函数.
(3) 如果需要使用经常用到的图片展,可以使用软引用.
(4) 注意集合数据类型,包括数组,树等数据,这些数据结构对GC 来说,回收更为复杂,
(5) 尽量避免在类的默认构造器中创建,初始化大量的对象,防止在调用其自类的构造器
时造成不必要的内存资源浪费.
(6) 尽量避免强制系统做


相关文档:

excel java 实例

POIFSFileSystem fs=new POIFSFileSystem(new   FileInputStream(cfname));  
                 HSSFWorkbook   wb   =   new   HSSFWorkbook(fs);  
  ......

JAVA清除html格式正则表达式


 public static String splitAndFilterString(String input, int length) {   
        if (input == null || input.trim().equals("")) {   
     &nb ......

java实现验证码

java验证码的实现(一)
收藏



1.ImageServlet类的实现:
package com.mobile.control;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOExcep ......

Zlib压缩算法在java上的应用

JAVA实现
  在JDK中,在java.util.zip包中已经内置了ZLIB的实现,示例代码如下:
1//解压
2 public String decompressData(String encdata) {
3 try {
4 ByteArrayOutputStream bos = new ByteArrayOutputStream(); 
5 InflaterOutputStream zos = new InflaterOutputStream(bos); 
6 zo ......

从 Java 代码逆向工程生成 UML 类图和序列图

本文面向于那些软件架构师,设计师和开发人员,他们想使用 IBM® Rational® Software Architect 从 Java™ 源代码来逆向工程生成 UML 类和序列图。 逆向工程经常被用来从已有的源代码中以一种抽象模型 UML 格式来获得丢失的设计文档,其可以用来研究一个系统的静态结构和动态行为,并用于扩展新的特性到产品。 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号