第5章 调优案例分析与实践

来源:互联网 发布:互联网运营工资 知乎 编辑:程序博客网 时间:2024/06/04 19:38

概述:

了解调优的思想

1、高性能硬件上的程序部署策略

如果堆的内存设置较大的时候,GC将会产生较大停顿,如果大文件不会在新生代而直接进入老生代,导致老生代内存被耗尽。

在高性能硬件上部署程序,目前主要有两种方式:

  • 通过64位JDK来使用大内存
  • 使用若干个32位虚拟机建立逻辑集群利用硬件资源

大内存就是在夜间某个时间内进行GC不会影响用户体验

类型建立负载均衡来对于32位虚拟机集群访问。

2、集群间同步导致的内存溢出

-XX:+HeapDumpOnOutOfMemoryError 生成dump文件 ,写频繁耗资源,读耗资源较小

3、堆外内存导致的溢出错误

NIO操作使用的Direct Memory 与堆内存没有关系

通过 -XX:MaxDirectMemorySize 调整大小

4、外部命令导致系统缓慢

使用外部命令执行shell脚本

java的Runtime.getRuntime().exec()方法调用,直接会开另个线程

5、服务器JVM进程崩溃

并发访问产生大量的socket请求,最后出现 java.net.SocketException:Connection reset

这是异步出现问题,可以通过生产者和消费者模式的消息队列完成

6、实战:Eclipse运行速度调优

6.1 可以通过修改eclipse.ini进行调优

-startupplugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar--launcher.libraryplugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.300.v20150602-1417-productorg.eclipse.epp.package.jee.product--launcher.defaultActionopenFile--launcher.XXMaxPermSize256M-showsplashorg.eclipse.platform--launcher.XXMaxPermSize256m--launcher.defaultActionopenFile--launcher.appendVmargs-vmargs-Dosgi.requiredJavaVersion=1.7-Xms256m-Xmx1024m

6.2、设置 JDK1.6需要明确指定-XX:MaxPermSize=254M  设置永久代的内存

6.3 编译时间和垃圾收集时间

编译时间:是指定虚拟机的JIT编译器(Just In Time Compiler) 如果某些代码被循环使用就是直接编译成本地执行二进制码

垃圾收集时间:主要是老年代内存的扩展花费,可以在启动的时候指定内存大小

最后增加的设置:

-Xverifiy:none (表示取消字符验证)

-Xmx 512m 最大内存

-Xms 512m  实际分配大小

-Xms 128m 

-XX:PermSize =96  永久代内存

-XX:MaxPermSize=96 最大永久代内存。

-XX:+DisableExplicitGC (屏蔽System.gc(),自动执行gc)

-XX:+UseConcMarkSweepGC  老生代垃圾收集器

-XX:+UseParNewGC 新生代垃圾收集器

-XX:CMSInitiatingOccupancyFraction=85   将GC临界值提升到85%

阅读全文
0 0
原创粉丝点击