JAVA 程序发布引发性能抖动】的更多相关文章

发布或重启线上服务时抖动问题解决方案 一.问题描述       在发布或重启某线上某服务时(jetty8作为服务器),常常发现有些机器的load会飙到非常高(高达70),并持续较长一段时间(5分钟)后回落(图1),与此同时响应时间曲线(图2)也与load曲线一致.注:load飙高的初始时刻是应用服务端口打开,流量打入时(load具体指什么可参考http://www.cnblogs.com/amsun/p/3155246.html). 图1 发布时候load飙高 图2 发布时候响应时间飙高 二.问…
怎么把jar文件做成系统服务,比较多的解决方案是使用 wrapper-windows 这个软件包.这个软件包的强大之处是能把jre环境也给打进去,这个服务可以正常运行在根本没有jre环境即就没有安装JDK的机器上. 1.到Java Service Wrapper 官网https://wrapper.tanukisoftware.com/doc/english/download.jsp,下载一个符合自己操作系统的版本. 这里用的是32位3.5.30最新版本的.(注:32版本是免费的,64是需要付费…
1.使用工具jartoexe http://www.regexlab.com/zh/jar2exe/free.htm http://www.jar2exe.com/ 2.exe4j.JSmooth等 3.install4j http://www.ej-technologies.com/products/install4j/overview.html http://www.oschina.net/p/install4j…
一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util.vector; class cel { void method (vector vector) { for (int i = 0; i < vector.size (); i++) // violation ; // ... } } 更正: class cel_fixed { void metho…
一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util.vector; class cel { void method (vector vector) { for (int i = 0; i < vector.size (); i++) // violation ; // ... } } 更正: class cel_fixed { void metho…
一.避免在循环条件中使用复杂表达式 在不做编译优化的情况下,在循环中,循环条件会被反复计算,如果不使用复杂表达式,而使循环条件值不变的话,程序将会运行的更快. 例子: import java.util.vector; class cel { void method (vector vector) { for (int i = 0; i < vector.size (); i++) // violation ; // ... } } 更正: class cel_fixed { void metho…
一.核心部分总结: 尽量在合适的场合使用单例[减负提高效率] 尽量避免随意使用静态变量[GC] 尽量重用对象,避免过多过常地创建Java对象[最大限度地重用对象] 尽量使用final修饰符[内联(inline)] 尽量使用局部变量[栈快] 尽量处理好包装类型和基本类型两者的使用场所[堆栈] 慎用synchronized,尽量减小synchronize的方法[锁定了对象] 尽量不要使用finalize方法[GC] 尽量使用基本数据类型代替对象 多线程在未发生线程安全前提下应尽量使用HashMap.…
4. 编写高效Java程序 4.1 面向对象 构造器参数太多怎么办? 正常情况下,如果构造器参数过多,可能会考虑重写多个不同参数的构造函数,如下面的例子所示: public class FoodNormal { //required private final String foodName;//名称 private final int reilang;//热量 //optional private final int danbz;//蛋白质 private final int dianfen;…
Java程序性能优化技巧 多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for循环Vector vect = new Vector(1000);for( inti=0; i<vect.size(); i++){ ...}for循环部分改写成:int size = vect.size();for( int i=0; i>size; i++){ ...} 如果size=1000…
PMD是一款采用BSD协议发布的Java程序代码检查工具.该工具可以做到检查Java代码中是否含有未使用的变量.是否含有空的抓取块.是否含有不必要的对象等.该软件功能强大,扫描效率高,是Java程序员debug的好帮手. PMD支持的编辑器包括: JDeveloper.Eclipse.JEdit.JBuilder.BlueJ.CodeGuide.NetBeans/Sun Java Studio Enterprise/Creator.IntelliJ IDEA.TextPad.Maven.Ant,…