这是一本相当不错的书,理解相当深入。
性能相关的一些使用技巧:
1) 异常
2) 类型转化
3) 重复取值(同原来用友.net性能分析报告)
集合:
1) set,list,map
2) Vector
3) Hashtable(去掉??)
A. 本地/远程问题
ü 本地/远程透明度的实现途径(4个阶段,基于消息有ESB书中说明)
第3个阶段:RPC,
RMI(JAVA)远程方法调用(RMI传输协议(RTP)控制在客户端和服务器的JVM实例(进程)之间的TCP连接上信息流。RTP建立在HTTP和对象序列化协议之上。
企业级JAVA BEAN扩展了RMI模型,RTP协议不支持健壮的企业服务器要求的事务和安全上下文的传播。还添加了公共对象请求代理系统结构(CORBA)的互操作性。
ü 如何选择远程访问模型
ü 对象粒度
粗粒度的业务对象比细粒度的业务对象更能承受方法调用的开销。粗粒度“包装”对象把大部分工作都委托给中间件(RDB/CICS)和现存的过程(COBOL和C)代码。
粒度的理解,这是一个相对的术语,取决于上下文。如果访问对象的开销比对象工作的开销大,那么业务对象的粒度就过小,如果很难扩展或者重用作为较大应用程序一部分的对象,那么业务对象的粒度就过大了。根据这个定义,对象的相对粒度取决于本地和远程调用的频率,以及设计是否知合于当前和未来的需求。
ü 正确放置数据
对象的亲合力(就是域的设计,域的定义等)
B. 粒度
接口粒度
实现粒度
什么??(平衡,频繁交互还是大粒度DTO传输,复式接口)
关于性能的例子
C. 瓶颈
ü 同步瓶颈
滥用同步;使用非同步方法以达到需求,自己定义的同步等;
ü 加锁瓶颈
同步和锁的关系,事务与锁的关系;P100,
JAVA同步对于确保单个实例的原子更新是有用的,但是业务应用程序需求执行一系列相关更新的事务行为。事务行为通常与业务逻辑和持久性有关。涉及多个对象的复杂更新必须整体完成或者被重新设置到初试状态上(回滚)。
ü 垃圾回收瓶颈
垃圾回收的时间占据了工作量的大部分。(总量)
垃圾回收的间歇时间对响应时间有影响。(什么是间歇时间??)
垃圾收集器阻止应用程序有效地使用系统资源。(同步)
垃圾收集器在分布式应用程序中创建串行化点。
分布式垃圾回收:对象又是如何维护的啊?这里涉及到服务器端对象的生命周期的管理模式(好像都不适用啊?)
维护会话数据需要HTML文本和客户端浏览器之间有额外的数据流。
技术有:
a) 隐藏html形式的域;
b) Cookies
c) URL重写
d) Servlet会话