关闭

Java性能优化技巧集锦 3

668人阅读 评论(0) 收藏 举报
2.7 生成主键

 

  在EJB之内生成主键有许多途径,下面分析了几种常见的办法以及它们的特点。

  利用数据库内建的标识机制(SQL Server的IDENTITY或Oracle的SEQUENCE)。这种方法的缺点是EJB可移植性差。

  由实体Bean自己计算主键值(比如做增量操作)。它的缺点是要求事务可串行化,而且速度也较慢。

  利用NTP之类的时钟服务。这要求有面向特定平台的本地代码,从而把Bean固定到了特定的OS之上。另外,它还导致了这样一种可能,即在多CPU的服务器上,同一个毫秒之内生成了两个主键。

  借鉴Microsoft的思路,在Bean中创建一个GUID。然而,如果不求助于JNI,Java不能确定网卡的MAC地址;如果使用JNI,则程序就要依赖于特定的OS。

  还有其他几种办法,但这些办法同样都有各自的局限。似乎只有一个答案比较理想:结合运用RMI和JNDI。先通过RMI注册把RMI远程对象绑定到JNDI树。客户程序通过JNDI进行查找。下面是一个例子:

public class keyGenerator extends UnicastRemoteObject implements Remote {
private static long KeyValue = System.currentTimeMillis();
public static synchronized long getKey() throws RemoteException { return KeyValue++; }

  2.8 及时清除不再需要的会话

  为了清除不再活动的会话,许多应用服务器都有默认的会话超时时间,一般为30分钟。当应用服务器需要保存更多会话时,如果内存容量不足,操作系统会把部分内存数据转移到磁盘,应用服务器也可能根据“最近最频繁使用”(Most Recently Used)算法把部分不活跃的会话转储到磁盘,甚至可能抛出“内存不足”异常。在大规模系统中,串行化会话的代价是很昂贵的。当会话不再需要时,应当及时调用HttpSession.invalidate()方法清除会话。HttpSession.invalidate()方法通常可以在应用的退出页面调用。

  2.9 在JSP页面中关闭无用的会话

  对于那些无需跟踪会话状态的页面,关闭自动创建的会话可以节省一些资源。使用如下page指令:

<%@ page session="false"%>

  2.10 Servlet与内存使用

  许多开发者随意地把大量信息保存到用户会话之中。一些时候,保存在会话中的对象没有及时地被垃圾回收机制回收。从性能上看,典型的症状是用户感到系统周期性地变慢,却又不能把原因归于任何一个具体的组件。如果监视JVM的堆空间,它的表现是内存占用不正常地大起大落。

  解决这类内存问题主要有二种办法。第一种办法是,在所有作用范围为会话的Bean中实现HttpSessionBindingListener接口。这样,只要实现valueUnbound()方法,就可以显式地释放Bean使用的资源。

  另外一种办法就是尽快地把会话作废。大多数应用服务器都有设置会话作废间隔时间的选项。另外,也可以用编程的方式调用会话的 setMaxInactiveInterval()方法,该方法用来设定在作废会话之前,Servlet容器允许的客户请求的最大间隔时间,以秒计。

  2.11 HTTP Keep-Alive

  Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。市场上的大部分Web服务器,包括iPlanet、IIS和Apache,都支持HTTP Keep-Alive。对于提供静态内容的网站来说,这个功能通常很有用。但是,对于负担较重的网站来说,这里存在另外一个问题:虽然为客户保留打开的连接有一定的好处,但它同样影响了性能,因为在处理暂停期间,本来可以释放的资源仍旧被占用。当Web服务器和应用服务器在同一台机器上运行时,Keep- Alive功能对资源利用的影响尤其突出。

  2.12 JDBC与Unicode

  想必你已经了解一些使用JDBC时提高性能的措施,比如利用连接池、正确地选择存储过程和直接执行的SQL、从结果集删除多余的列、预先编译SQL语句,等等。

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Java性能优化技巧集锦 3

2.7 生成主键     在EJB之内生成主键有许多途径,下面分析了几种常见的办法以及它们的特点。   利用数据库内建的标识机制(SQL Server的IDENTITY或Oracle的SEQUENCE)。这种方法的缺点是EJB可移植性差。   由实体Bean自己计算...
  • wuhao0420wuhao
  • wuhao0420wuhao
  • 2013-03-27 12:59
  • 194

11 个简单的 Java 性能调优技巧

大多数开发人员理所当然地以为性能优化很复杂,需要大量的经验和知识。好吧,不能说这是完全错误的。优化应用程序以获得最佳性能不是一件容易的事情。但是,这并不意味着如果你不具备这些知识,就不能做任何事情。这里有11个易于遵循的建议和最佳实践可以帮助你创建一个性能良好的应用程序。 ...
  • qq_38245537
  • qq_38245537
  • 2017-12-11 11:40
  • 35

Java性能优化技巧集锦

可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。本文讨论的主要是如何提高代码的效率。  一、通用篇   “通用篇”讨论的问题适合于大多数Java应用。  1.1 不用new关...
  • fengyie007
  • fengyie007
  • 2013-12-27 19:48
  • 563

Java性能优化技巧集锦

Java性能优化技巧集锦 摘要: =================================== 可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。本文讨论的...
  • nanmuling
  • nanmuling
  • 2014-07-16 17:03
  • 230

Java性能优化技巧集锦 .

一、通用篇 “通用篇”讨论的问题适合于大多数Java应用。 1.1 不用new关键词创建类的实例 用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用。但如果一个对象实现了Cloneable接口,我们可以调用它的clone()方法。clone()方法不会调用任何类构造函...
  • wenzhihui_2010
  • wenzhihui_2010
  • 2013-06-20 17:21
  • 376

Java性能优化技巧集锦

一、通用篇  1.1 不用new关键词创建类的实例  1.2 使用非阻塞I/O  1.3 慎用异常  1.4 不要重复初始化变量  1.5 尽量指定类的final修饰符  1.6 尽量使用局部变量  1.7 乘法和除...
  • wangshfa
  • wangshfa
  • 2013-01-02 12:35
  • 208

Java性能优化技巧集锦

Java性能优化技巧集锦 作者:兄弟连 可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务。优化通常包含两方面的内容:减小代码的体积,提高代码的运行效率。本文讨论的主要是如何提高代码的效率。     一、通用篇 ...
  • weixin_36518553
  • weixin_36518553
  • 2016-10-26 13:52
  • 37

Java性能优化技巧集锦

一、通用篇    1.1 不用new关键词创建类的实例    1.2 使用非阻塞I/O    1.3 慎用异常    1.4 不要重复初始化变量    1.5 尽量指定类的final修饰符    1.6 尽量使用局部变量...
  • gaokao2011
  • gaokao2011
  • 2013-12-03 10:20
  • 530

Java性能优化技巧集锦

一、通用篇 “通用篇”讨论的问题适合于大多数Java应用。 1.1 不用new关键词创建类的实例 用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用。但如果一个对象实现了Cloneable接口,我们可以调用它的clone()方法。clone()方法不会调用任何类构造函...
  • zhangweikai966
  • zhangweikai966
  • 2014-04-22 09:35
  • 7228

【golang】Go 性能优化技巧

一. array与slice 对于一些初学者,自知道 Go 里面的 array 以 pass-by-value 方式传递后,就莫名地引起 “恐慌”。外加诸多文章未作说明,就建议用 slice 代替 array,企图避免数据拷贝,提升性能。实际上,此做法有待商榷。某些时候怕会适得其反,倒造成不必要的...
  • zhonglinzhang
  • zhonglinzhang
  • 2017-05-03 09:56
  • 585
    个人资料
    • 访问:3390180次
    • 积分:29821
    • 等级:
    • 排名:第200名
    • 原创:347篇
    • 转载:561篇
    • 译文:7篇
    • 评论:342条
    艺术设计类