5.1概述
5.2案例分析
5.2.1高性能硬件上的程序部署
两种方式
通过64位JDK使用大内存
内存回收导致长时间停顿
现阶段,64位JDK的性能结果普遍低于32位JDK
需要保证程序稳定,因为产生堆栈溢出几乎无法产生堆转储快照,产生了也无法分析
由于指针膨胀、数据类型对齐补白等因素,64位消耗内存更大
通过若干个32位虚拟机建立逻辑集群来利用硬件资源
避免节点竞争全局资源,例如磁盘竞争
很难最高效率的利用某些资源池
各节点不可避免的受到32的内存限制
大量使用本地缓存的应用,造成内存浪费,考虑改为集中式缓存
5.2.2集群间同步导致内存溢出
5.2.3堆外内存导致的溢出错误
除了堆和永久代之外,以下区域受操作系统进程最大内存限制
Direct Momory
线程堆栈
socket缓存区
JNI方法
虚拟机和GC
5.2.4外部命令导致系统缓慢
5.2.5服务器JVM进程奔溃
5.2.6不恰当数据结构导致内存占用过大
5.2.7由windows虚拟内存导致长时间停顿
5.3实战:Eclipse运行速度调优
5.3.1 调优前的程序运行状态
5.3.2 升级jdk 1.6的性能变化及兼容问题
5.3.3 编译时间和类加载时间的优化
5.3.4 调整内存设置控制垃圾收集频率
5.3.5 选择收集器降低延迟
参考文献:
[1] 深入理解Java虚拟机 第二版 --周志明
网友评论