1.对象的生成和大小的调整。
java程序设计中一个普遍的问题就是没有好好的利用java语言本身提供的函数,从而常常会生成大量的对象(或实例)。由于系统不仅要花时间生成对象,以后可能还需花时间对这些对象进行垃圾回收和处理。因此,生成过多的对象将会给程序的性能带来很大的影响。
例1:关于string ,stringbuffer,+和append
java语言提供了对于string类型变量的操作。但如果使用不当,会给程序的性能带来影响。如下面的语句:
string name=new string(“huangweifeng”);
system.out.println(name+”is my name”);
看似已经很精简了,其实并非如此。为了生成二进制的代码,要进行如下的步骤和操作。
(1) 生成新的字符串 new string(str_1);
(2) 复制该字符串。
(3) 加载字符串常量”huangweifeng”(str_2);
(4) 调用字符串的构架器(constructor);
(5) 保存该字符串到数组中(从位置0开始)
(6) 从java.io.printstream类中得到静态的out变量
(7) 生成新的字符串缓冲变量new stringbuffer(str_buf_1);
(8) 复制该字符串缓冲变量
(9) 调用字符串缓冲的构架器(constructor);
(10) 保存该字符串缓冲到数组中(从位置1开始)
(11) 以str_1为参数,调用字符串缓冲(stringbuffer)类中的append方法。
(12) 加载字符串常量”is my name”(str_3);
(13) 以str_3为参数,调用字符串缓冲(stringbuffer)类中的append方法。
(14) 对于str_buf_1执行tostring命令。
(15) 调用out变量中的println方法,输出结果。
由此可以看出,这两行简单的代码,就生成了str_1,str_2,str_3,str_4和str_buf_1五个对象变量。这些生成的类的实例一般都存放在堆中。堆要对所有类的超类,类的实例进行初始化,同时还要调用类极其每个超类的构架器。而这些操作都是非常消耗系统资源的。因此,对对象的生成进行限制,是完全有必要的。
经修改,上面的代码可以用如下的代码来替换。
stringbuffer name=new stringbuffer(“huangweifeng”);
system.out.println(name.append(“is my name.”).tostring());
string name= new stringbuffer(“huangweifeng”);
name+=”is my”;
name+=”name”;
stringbuffer name=new stringbuffer(“huangweifeng”);
name.append(“is my”);
name.append(“name.”).tostring();
public class foo
{
someobject so=new someobject();
}
public class foo
{
static someobject so=new someobject();
}
someobject so=new someobject();from-:http://www.computerworld.com.cn
if(x==1) then
{
foo=so.getxx();
}
可以修改为:
if(x==1) then
{
someobject so=new someobject();
foo=so.getxx();
}
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器