iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java性能的优化技巧有哪些
  • 542
分享到

Java性能的优化技巧有哪些

2023-06-17 12:06:31 542人浏览 独家记忆
摘要

这篇文章主要讲解了“Java性能的优化技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java性能的优化技巧有哪些”吧!1.对象的生成和大小的调整。 JAVA程序设计中一个普遍的问题

这篇文章主要讲解了“Java性能的优化技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java性能的优化技巧有哪些”吧!

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());

系统将进行如下的操作。

(1) 生成新的字符串缓冲变量new StringBuffer(STR_BUF_1);

(2) 复制该字符串缓冲变量

(3) 加载字符串常量”HuangWeiFeng”(STR_1);

(4) 调用字符串缓冲的构架器(Constructor);

(5) 保存该字符串缓冲到数组中(从位置1开始)

(6) 从java.io.PrintStream类中得到静态的out变量

(7) 加载STR_BUF_1;

(8) 加载字符串常量”is my name”(STR_2);

(9) 以STR_2为参数,调用字符串缓冲(StringBuffer)实例中的append方法。

(10) 对于STR_BUF_1执行toString命令。(STR_3)

(11)调用out变量中的println方法,输出结果。

由此可以看出,经过改进后的代码只生成了四个对象变量:STR_1,STR_2,STR_3和STR_BUF_1.你可能觉得少生成一个对象不会对程序的性能有很大的提高。但下面的代码段2的执行速度将是代码段1的2倍。因为代码段1生成了八个对象,而代码段2只生成了四个对象。

代码段1:

String name= new StringBuffer(“HuangWeiFeng”);   name+=”is my”;   name+=”name”;

代码段2:

StringBuffer name=new StringBuffer(“HuangWeiFeng”);   name.append(“is my”);   name.append(“name.”).toString();

因此,充分的利用JAVA提供的库函数来优化程序,对提高JAVA程序的性能时非常重要的.其注意点主要有如下几方面;

(1) 尽可能的使用静态变量(Static Class Variables)

如果类中的变量不会随他的实例而变化,就可以定义为静态变量,从而使他所有的实例都共享这个变量。
例:

public class foo   {   SomeObject so=new SomeObject();   }

就可以定义为:

public class foo   {   static SomeObject so=new SomeObject();   }

(2)不要对已生成的对象作过多的改变。

对于一些类(如:String类)来讲,宁愿在重新生成一个新的对象实例,而不应该修改已经生成的对象实例。

例:

String name=”Huang”;   name=”Wei”;   name=”Feng”;

上述代码生成了三个String类型的对象实例。而前两个马上就需要系统进行垃圾回收处理。如果要对字符串进行连接的操作,性能将得更差。因为系统将不得为此生成更多得临时变量。如上例1所示。

(3) 生成对象时,要分配给它合理的空间和大小

JAVA中的很多类都有它的默认的空间分配大小。对于StringBuffer类来讲,默认的分配空间大小是16个字符。如果在程序中使用StringBuffer的空间大小不是16个字符,那么就必须进行正确的初始化。

(4) 避免生成不太使用或生命周期短的对象或变量。

对于这种情况,因该定义一个对象缓冲池。以为管理一个对象缓冲池的开销要比频繁的生成和回收对象的开销小的多。

(5) 只在对象作用范围内进行初始化。

JAVA允许在代码的任何地方定义和初始化对象。这样,就可以只在对象作用的范围内进行初始化。从而节约系统的开销。

例:

SomeObject so=new SomeObject();   If(x==1) then   {   Foo=so.getXX();   }   可以修改为:   if(x==1) then   {   SomeObject so=new SomeObject();   Foo=so.getXX();   }

2.异常(Exceptions)

JAVA语言中提供了try/catch来发方便用户捕捉异常,进行异常的处理。但是如果使用不当,也会给JAVA程序的性能带来影响。因此,要注意以下两点。

(1) 避免对应用程序的逻辑使用try/catch

如果可以用if,while等逻辑语句来处理,那么就尽可能的不用try/catch语句

(2) 重用异常

在必须要进行异常的处理时,要尽可能的重用已经存在的异常对象。以为在异常的处理中,生成一个异常对象要消耗掉大部分的时间。

3. 线程(Threading)

一个高性能的应用程序中一般都会用到线程。因为线程能充分利用系统的资源。在其他线程因为等待硬盘或网络读写而 时,程序能继续处理和运行。但是对线程运用不当,也会影响程序的性能。

例2:正确使用Vector类

Vector主要用来保存各种类型的对象(包括相同类型和不同类型的对象)。但是在一些情况下使用会给程序带来性能上的影响。这主要是由Vector类的两个特点所决定的。***,Vector提供了线程的安全保护功能。即使Vector类中的许多方法同步。但是如果你已经确认你的应用程序是单线程,这些方法的同步就完全不必要了。第二,在Vector查找存储的各种对象时,常常要花很多的时间进行类型的匹配。而当这些对象都是同一类型时,这些匹配就完全不必要了。因此,有必要设计一个单线程的,保存特定类型对象的类或集合来替代Vector类.用来替换的程序如下(StringVector.java):

public class StringVector   {   private String [] data;   private int count;   public StringVector() { this(10); // default size is 10 }   public StringVector(int initialSize)   {   data = new String[initialSize];   }   public void add(String str)   {   // ignore null strings   if(str == null) { return; }   ensureCapacity(count + 1);   data[count++] = str;   }    private void ensureCapacity(int minCapacity)   {   int oldCapacity = data.length;   if (minCapacity > oldCapacity)   {   String oldData[] = data;   int newCapacity = oldCapacity * 2;   data = new String[newCapacity];   System.arraycopy(oldData, 0, data, 0, count);   }   }   public void remove(String str)   {   if(str == null) { return // ignore null str }   for(int i = 0; i < count; i++)   {   // check for a match   if(data[i].equals(str))   {   System.arraycopy(data,i+1,data,i,count-1); // copy data   // allow previously valid array element be GC'd   data[--count] = null;   return;   }   }   }   public final String getStringAt(int index) {   if(index < 0) { return null; }   else if(index > count)   {   return null; // index is > # strings   }   else { return data[index]; // index is Good }   }      因此,代码:   Vector Strings=new Vecto

感谢各位的阅读,以上就是“Java性能的优化技巧有哪些”的内容了,经过本文的学习后,相信大家对Java性能的优化技巧有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Java性能的优化技巧有哪些

本文链接: https://www.lsjlt.com/news/288995.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 有哪些Java性能优化技巧
    这篇文章主要讲解了“有哪些Java性能优化技巧”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“有哪些Java性能优化技巧”吧!  1.在你确认必要之前不要优化  你应该遵循常见的最佳实践做法并...
    99+
    2023-06-02
  • Java性能的优化技巧有哪些
    这篇文章主要讲解了“Java性能的优化技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java性能的优化技巧有哪些”吧!1.对象的生成和大小的调整。 JAVA程序设计中一个普遍的问题...
    99+
    2023-06-17
  • python性能优化技巧有哪些
    小编给大家分享一下python性能优化技巧有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!性能优化技巧1. 限制CPU和内存使用量如果Python程序占用资源...
    99+
    2023-06-27
  • SQL性能优化技巧有哪些
    这篇文章给大家分享的是有关SQL性能优化技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.查询的模糊匹配尽量避免在一个复杂查询里面使用 LIKE '%parm1...
    99+
    2022-10-19
  • JavaScript性能优化技巧有哪些
    这篇文章主要为大家展示了“JavaScript性能优化技巧有哪些”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript性能优化技巧有哪些”这篇文章吧...
    99+
    2022-10-19
  • vue性能优化技巧有哪些
    这篇文章主要介绍“vue性能优化技巧有哪些”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“vue性能优化技巧有哪些”文章能帮助大家解决问题。gzip压缩在所有的web前台项目,静态资源基本都放在cdn...
    99+
    2023-07-04
  • docker优化性能的技巧有哪些
    以下是一些优化Docker性能的技巧: 使用多阶段构建:多阶段构建可以减小镜像的大小,从而提高构建和部署的性能。 使用合适的...
    99+
    2023-10-25
    docker
  • Android性能优化的技巧有哪些
    这篇“Android性能优化的技巧有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Android性能优化的技巧有哪些”文...
    99+
    2023-06-04
  • mongodb性能优化的技巧有哪些
    以下是一些MongoDB性能优化的技巧: 索引优化:使用合适的索引可以大大提高查询性能。使用explain()命令来分析查询性能...
    99+
    2023-10-25
    mongodb
  • Web性能优化的技巧有哪些
    这篇文章主要介绍了Web性能优化的技巧有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Web性能优化的技巧有哪些文章都会有所收获,下面我们一起来看看吧。1. 使用文本压缩使用文本压缩,可以最大程度地减少通过...
    99+
    2023-06-27
  • Java程序性能优化的编程技巧有哪些
    本篇内容主要讲解“Java程序性能优化的编程技巧有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java程序性能优化的编程技巧有哪些”吧!1、慎用异常在Java软件开发中,经常使用 try-...
    99+
    2023-06-17
  • Java 对象的 HTTP 加载性能优化技巧有哪些?
    在现代 Web 应用程序中,HTTP 加载性能是至关重要的。Java 程序员需要考虑如何优化对象的 HTTP 加载性能,以获得更快的响应时间和更好的用户体验。在本文中,我们将介绍一些 Java 对象的 HTTP 加载性能优化技巧,帮助您在...
    99+
    2023-07-27
    对象 http load
  • python代码性能优化技巧有哪些
    python优化代码性能技巧:1.优化字符串;2.减少循环;3.优化算法;python中优化代码性能的技巧有以下几种优化字符串python中字符串对象是不可改变的,在对字符串进行拼接等操作时,会产生一个新的字符串对象,从而会在一定程度上影响...
    99+
    2022-10-09
  • Java性能调优的实用技巧有哪些
    这篇文章给大家分享的是有关Java性能调优的实用技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。1.在必要之前,先不要优化 这可能是最最重要的性能调优技巧之一。你应该遵循常见的最佳实践,并尝试有效地实现你...
    99+
    2023-05-30
    java
  • 优化Vue开发中的性能技巧有哪些
    这篇文章主要介绍了优化Vue开发中的性能技巧有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇优化Vue开发中的性能技巧有哪些文章都会有所收获,下面我们一起来看看吧。1. 长列表性能优化1. 不做响应式比如会...
    99+
    2023-06-29
  • Vue开发中的性能优化技巧有哪些
    这篇文章将为大家详细讲解有关Vue开发中的性能优化技巧有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 长列表性能优化1. 不做响应式比如会员列表、商品列表之类的,只是纯粹的数据展示,不会有任何动...
    99+
    2023-06-29
  • DB2数据库性能优化技巧有哪些
    今天就跟大家聊聊有关DB2数据库性能优化技巧有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。  打开DB2数据库监视开关,获取需要的性能信息最简...
    99+
    2022-10-19
  • Laravel 5框架性能优化技巧有哪些
    这篇文章主要讲解了“Laravel 5框架性能优化技巧有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Laravel 5框架性能优化技巧有哪些”吧!配置缓存信息使用laravel自带的a...
    99+
    2023-06-04
  • tomcat性能调优的技巧有哪些
    1. 增加JVM内存:通过调整Tomcat的启动参数,增加JVM的初始堆大小(-Xms)和最大堆大小(-Xmx),以提高Tomcat...
    99+
    2023-10-11
    tomcat
  • Web前端性能优化的实用技巧有哪些
    这篇文章主要介绍“Web前端性能优化的实用技巧有哪些”,在日常操作中,相信很多人在Web前端性能优化的实用技巧有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作