「优化java程序」JAVA应用程序性能优化

博主:adminadmin 2023-01-10 23:57:06 1094

本篇文章给大家谈谈优化java程序,以及JAVA应用程序性能优化对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Java程序性能优化-代理模式(5)

  代理模式( )

在以上代码中 使用CtField make()方法和CtNewMehod make()方法在运行时生成了代理类的字段和方法 这些逻辑由Javassist的CtClass对象处理 将Java代码转换为对应的字节码 并生成动态代理类的实例

注意 与静态代理相比 动态代理可以很大幅度地减少代码行数 并提升系统的灵活性

在Java中 动态代理类的生成主要涉及对ClassLoader的使用 这里以CGLIB为例 简要阐述动态类的加载过程 使用CGLIB生成动态代理 首先需要生成Enhancer类实例 并指定用于处理代理业务的回调类 在Enhancer create()方法中 会使用DefaultGeneratorStrategy Generate()方法生成动态代理类的字节码 并保存在byte数组中 接着使用ReflectUtils defineClass()方法 通过反射 调用ClassLoader defineClass()方法 将字节码装载到ClassLoader中 完成类的加载 最后使用ReflectUtils newInstance()方法 通过反射 生成动态类的实例 并返回该实例 无论使用何种方法生成动态代理 虽然实现细节不同 但主要逻辑都如图 所示

图   实现动态代理的基本步骤

前文介绍的几种动态代理的生成方法 性能有一定差异 为了能更好地测试它们的性能 去掉DBQuery类中的sleep()代码 并使用以下方法测试

public static final int CIRCLE= ;

public static void main(String[] args) throws Exception {

IDBQuery d=null;

long begin=System currentTimeMillis()

d=createJdkProxy()                      //测试JDK动态代理

System out println( createJdkProxy: +(System currentTimeMillis() beg    in))

System out println( JdkProxy class: +d getClass() getName())

begin=System currentTimeMillis()

for(int i= ;iCIRCLE;i++)

d request()

System out println( callJdkProxy: +(System currentTimeMillis() begin    ))

begin=System currentTimeMillis()

d=createCglibProxy()                    //测试CGLIB动态代理

System out println( createCglibProxy: +(System currentTimeMillis() b    egin))

System out println( CglibProxy class: +d getClass() getName())

begin=System currentTimeMillis()

for(int i= ;iCIRCLE;i++)

d request()

System out println( callCglibProxy: +(System currentTimeMillis() beg    in))

begin=System currentTimeMillis()

d=createJavassistDynProxy()             //测试Javaassist动态代理

System out println( createJavassistDynProxy: +(System currentTimeMil    lis() begin))

System out println( JavassistDynProxy class: +d getClass() getName())

begin=System currentTimeMillis()

for(int i= ;iCIRCLE;i++)

d request()

System out println( callJavassistDynProxy: +(System currentTimeMilli    s() begin))

begin=System currentTimeMillis()

d=createJavassistBytecodeDynamicProxy()     //测试Javassist动态代理

System out println( createJavassistBytecodeDynamicProxy: +(System cu    rrentTimeMillis() begin))

System out println( JavassistBytecodeDynamicProxy class: +d getClass()

getName())

begin=System currentTimeMillis()

for(int i= ;iCIRCLE;i++)

d request()

System out println( callJavassistBytecodeDynamicProxy: +(System curr    entTimeMillis() begin))

}

       返回目录 Java程序性能优化 让你的Java程序更快 更稳定

编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

       J ME移动开发实战教学视频

Visual C++音频/视频技术开发与实战

Oracle索引技术

lishixinzhi/Article/program/Java/gj/201311/27830

Java程序性能优化-缓冲(Buffer)(1)

  常用优化组件和方法

本节主要介绍可用于系统性能优化的组件和性能优化思想 重点介绍缓冲和缓存这两个组件以及它们的使用方法 此外 还将介绍几种常用的优化思想 如池化对象 并行代替串行 负载均衡 以及时间换空间和空间换时间

  缓冲(Buffer)( )

缓冲区是一块特定的内存区域 开辟缓冲区的目的是通过缓解应用程序上下层之间的性能差异 提高系统的性能 在日常生活中 缓冲的一个典型应用是漏斗 如图 所示

图   缓冲的示意图

图 显示了漏斗作为缓冲区的使用场景 上层系统如茶壶 下层系统如水瓶 现需要将茶壶中的水倒入水瓶中 这就有如将内存中的数据写入硬盘中一样 茶壶的出水速度可以很快 但是水瓶的瓶口很细 因此形成性能瓶颈 要将水全部倒入瓶中 必须等待瓶口的水缓缓流下 为了加快速度 可以使用一个漏斗(缓冲)

漏斗的初始口径很大 并且拥有一定的容量 因此 茶壶中的水可以先倒入漏斗中 就有如内存数据先写入一块缓冲区 只要漏斗的容量够大 茶壶里的水很快就能倒完 至此 上层系统完成工作 可以去处理其他业务逻辑 而此时 水并未完全进入瓶中 而大部分被积累在漏斗中 这就可以由下层系统慢慢处理 直到水完全进入瓶中 漏斗(缓冲区)被清空

注意 缓冲可以协调上层组件和下层组件的性能差 当上层组件性能优于下层组件时 可以有效减少上层组件对下层组件的等待时间

基于这样的结构 上层应用组件不需要等待下层组件真实地接受全部数据 即可返回操作 加快了上层组件的处理速度 从而提升系统整体性能

缓冲最常用的场景就是提高I/O的速度 为此 JDK内不少I/O组件都提供了缓冲功能 比如 当使用FileWriter时 进行文件写操作的代码如下

Writer writer = new FileWriter(new File( file txt ))

long begin=System currentTimeMillis()

for (int i = ; i CIRCLE; i++) {

writer write(i)                                     //写入文件

}

writer close()

System out println( testFileWriter spend: +(System currentTimeMillis() begin))

为进行I/O优化 可以为FileWriter加上缓冲

Writer writer = new BufferedWriter(new FileWriter(new File( file txt )))                                                        //增加了缓冲

long begin=System currentTimeMillis()

for (int i = ; i CIRCLE; i++) {

writer write(i)

}

writer close()

System out println( testFileWriterBuffer spend: +(System currentTimeMillis() begin))

以上代码使用BufferedWriter为FileWriter对象增加缓冲功能 BufferedWriter对象拥有两个构造函数

public BufferedWriter(Writer out)

public BufferedWriter(Writer out int sz)

       返回目录 Java程序性能优化 让你的Java程序更快 更稳定

编辑推荐

       Java程序设计培训视频教程

       J EE高级框架实战培训视频教程

       J ME移动开发实战教学视频

Visual C++音频/视频技术开发与实战

Oracle索引技术

lishixinzhi/Article/program/Java/gj/201311/27807

北大青鸟java培训:Java学习中代码优化的方法有哪些?

每个人都说代码是程序员手中的一把雕刻刀,是对他们产品轮廓和细节的打磨。

每个程序员在代码优化方面需要做的是,即使是每天处理代码的程序员也有很多关于他们编写代码的问题,所以优化很重要。

下面山西山西IT培训为大家介绍代码优化的方法。

1、尽量重用目标特别是,使用代表字符串收敛的String目标应该使用StringBuilder/StringBuffer。

因为Java虚拟机不仅要花时间生成目标,而且可能还需要花时间检索和删除这些目标,所以山西计算机学院发现生成太多目标会对程序的功能产生重大影响。

2、可以运用局部变量调用方法时传递的参数和调用中创建的临时变量保存在堆栈中的速度更快。

其他变量,如静态变量、实例变量等等,在堆中创建,速度较慢。

此外,山西北大青鸟发现在堆栈中创建的变量,方法的操作结束,当这些内容都消失了,就不需要额定废物回收。

3、及时封闭流Java的程序编写过程中,数据库连接,I/O流操作必须谨慎,应用结束后,应该及时关闭发布资源。

因为山西java培训发现这些大目标的运行会造成大系统支出,稍有不慎就会导致严重的结果。

优化java程序的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于JAVA应用程序性能优化、优化java程序的信息别忘了在本站进行查找喔。