Java 性能的优化一关于性能的基本知识1性能的定义在我们讨论怎样提高 Java 的性能之前,我们需要明白“性能“的真正含义。我们一般定义如下五个方面作为评判性能的标准。1) 运算的性能-哪一个算法的执行性能最好2) 内存的分配-程序需要分配多少内存,运行时的效率和性能最高。3) 启动的时间-程序启
java-项目性能优化Tag内容描述:
1、现。
5) 性能的认识-用户怎样才能认识到程序的性能。
对于不同的应用程序,对性能的要求也不同。
例如,大部分的应用程序在启动时需要较长的时间,从而对启动时间的要求有所降低;服务器端的应用程序通常都分配有较大的内存空间,所以对内存的要求也有所降低。
但是,这并不是所这两方面的性能可以被忽略。
其次,算法的性能对于那些把商务逻辑运用到事务性操作的应用程序来讲非常重要。
总的来讲,对应用程序的要求将决定对各个性能的优先级。
2怎样才能提高 JAVA 的性能提高 JAVA 的性能,一般考虑如下的四个主要方面:( 1) 程序设计的方法和模式一个良好的设计能提高程序的性能,这一点不仅适用于 JAVA,也适用也任何的编程语言。
因为它充分利用了各种资源,如内存,CPU,高速缓存,对象缓冲池及多线程,从而设计出高性能和可伸缩性强的系统。
当然,为了提高程序的性能而改变原来的设计是比较困难的,但是,程序性能的重要性常常要高于设计上带来的变化。
因此,在编程开始之前就应该有一个好的设计模型和方法。
( 2) JAVA 布署的环境。
JAVA 布署的环境就是指用来解释和执行 JAVA 字节码的技术,一般有如下五种。
即。
2、AVA 程序设计中一个普遍的问题就是没有好好的利用 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 类中得到。
3、native_stdout.log 中生成如下的信息。
这幅图很形象的给出了 gc 日志的主要关注点:垃圾回收的原因、垃圾回收的间隔、垃圾回收前后的剩余空间、垃圾回收持续的时间“nursery”表示这次分配失败(Allocation Failure)发生在新生代(nursery),是第 44 次(id=44 )因为新生代的分配失败而进行垃圾回收了(开启 GC 日志以来),离上一次发生 GC 的间隔是12746ms,无法分配的空间大小是 8216Byte,而进行垃圾回收前,新生代的可用空间为 1776Byte,小于 8216Byte,虽然年老区还剩余 45%的空间,但是新的内存空间是无法直接在年老区分配的,由此引发了一次清理过程(scavenger)。
GC type 表明了这次垃圾回收是一个清理过程,也是第 44 次 scavenger 过程,同时恰是第 44个 gc 过程,说明没有发生过诸如 的垃圾回收过程。
flipped objectcount 说明将要把 4523143 个存活下来的对象被复制到了幸存区(survivor space),而 73768 个对象则经过多次幸存区的复制。
4、Java程序性能优化笔记 并行程序开发及优化 Mster work模式 其工作示意图如上 其核心思想就是将任务进行分解成多个子线程去执行 这样可以加快任务的执行速度 其实现主要有以及角色 Master类 进行任务的提交 worker的分配 会维护一个任务列表 Worker类 实现任务的执行 Mster类和worker类会共同维护一个任务队 列 多开几个线程去执行worker对应的任务 每个线程都是。
5、Java在九十年代中期出现以后 在赢得赞叹的同时 也引来了一些批评 赢得的赞叹主要是Java的跨平台的操作性 即所谓的 Write Once Run Anywhere 但由于Java的性能和运行效率同C相比 仍然有很大的差距 从而引来了很多的批评 对于服务器端的应用程序 由于不大涉及到界面设计和程序的频繁重启 Java的性能问题看似不大明显 从而一些Java的技术 如JSP Servlet EJB。
6、a 的技术,如 JSP,Servlet,EJB 等在服务器端编程方面得到了很大的应用,但实际上,Java 的性能问题在服务器端依然存在。
下面我将分四个方面来讨论 Java 的性能和执行效率以及提高 Java性能的一些方法。
一关于性能的基本知识1性能的定义在我们讨论怎样提高 Java 的性能之前,我们需要明白“性能“的真正含义。
我们一般定义如下五个方面作为评判性能的标准。
1) 运算的性能-哪一个算法的执行性能最好2) 内存的分配-程序需要分配多少内存,运行时的效率和性能最高。
3) 启动的时间-程序启动需要多少时间。
4) 程序的可伸缩性-程序在用户负载过重的情况下的表现。
5) 性能的认识-用户怎样才能认识到程序的性能。
对于不同的应用程序,对性能的要求也不同。
例如,大部分的应用程序在启动时需要较长的时间,从而对启动时间的要求有所降低;服务器端的应用程序通常都分配有较大的内存空间,所以对内存的要求也有所降低。
但是,这并不是所这两方面的性能可以被忽略。
其次,算法的性能对于那些把商务逻辑运用到事务性操作的应用程序来讲非常重要。
总的来讲,对应用程序的要求将决定。
7、上讲,Hibernate 它是先把符合条件的数据查出来,放到内存当中,然后再进行操作。
实际使用下来性能非常不理想。
解决方案可分为以下四种:1:绕过 Hibernate API ,直接通过 JDBC API 来做,这个方法性能上是比较好的。
也是最快的.2:运用存储过程。
代价是移植性降低3:缓存。
对于构建的业务系统,如果有些数据要经常要从数据库中读取,同时,这些数据又不经常变化,这些数据就可以在系统中缓存起来,使用时直接读取缓存,而不用频繁的访问数据库读取数据。
缓存工作可以在系统初始化时一次性读取数据,特别是一些只读的数据,当数据更新时更新数据库内容,同时更新缓存的数据值。
4:增加数据库连接池的大小。
三Java 虚拟机堆和垃圾回收设置任何 Java 应用的性能调整基础都涉及到堆的大小和垃圾回收设置。
(这里主要讨论 Sun HotSpor JVM).堆可分为三代,年轻的(新的),年老的和持久的。
Hotspot JVM的内存基本配置包括最大堆大小,初始堆大小和年轻一代堆的大小。
当配置最大堆大小时可参考下面一些指导:最大大小应小于物理内存,避免虚存的页面调度。
需要减去其他进程使用的内存 在负。