JVM笔记——调优案例分析与实战
2015-03-07 08:42
656 查看
给JAVA虚拟机分配超大堆的前提是有把握把应用程序的FULL GC 频率控制的足够低,至少不能影响用户体验。可以使用定时任务在深夜执行FULL GC。
一台服务器上的负载均衡使用非复制Session方式时,开发阶段基本不用为集群环境做特别的考虑。
该方式需要考虑的问题:
1.尽量避免节点竞争全局的资源,例如磁盘竞争,两个节点同时访问一个文件时容易引起IO异常。
2.很难高效地利用池资源,例如数据库连接池,可能某一节点池已经满了但是另一节点还是空的。
3.大量使用缓存可能造成大的内存浪费,因为每个节点都有一份缓存,这时可以把本地缓存改为集中式缓存。
异常分析:垃圾回收时虚拟机虽然会对Direct Memory(本地内存)进行回收,但是Direct Memory 不能在发现空间不足时通知收集器进行垃圾回收,它只能等待老年代满了后FULL GC。
除了java堆和永久代之外Direct Memory、线程堆栈、socket缓存区、JNI代码、虚拟机和GC还会占用较大的内存,这所有的内存综合会受到操作系统进程最大内存的限制。
Direct Memory:可通过-XX:MaxDirectMemorySize调整大小,内存不足时抛出OutOfMemoryError或OutOfMemoryError:Direct buffer memory
线程堆栈:可通过-Xss调整大小,内存不足时抛出StackOverFlowError
一台服务器上的负载均衡使用非复制Session方式时,开发阶段基本不用为集群环境做特别的考虑。
该方式需要考虑的问题:
1.尽量避免节点竞争全局的资源,例如磁盘竞争,两个节点同时访问一个文件时容易引起IO异常。
2.很难高效地利用池资源,例如数据库连接池,可能某一节点池已经满了但是另一节点还是空的。
3.大量使用缓存可能造成大的内存浪费,因为每个节点都有一份缓存,这时可以把本地缓存改为集中式缓存。
异常分析:垃圾回收时虚拟机虽然会对Direct Memory(本地内存)进行回收,但是Direct Memory 不能在发现空间不足时通知收集器进行垃圾回收,它只能等待老年代满了后FULL GC。
除了java堆和永久代之外Direct Memory、线程堆栈、socket缓存区、JNI代码、虚拟机和GC还会占用较大的内存,这所有的内存综合会受到操作系统进程最大内存的限制。
Direct Memory:可通过-XX:MaxDirectMemorySize调整大小,内存不足时抛出OutOfMemoryError或OutOfMemoryError:Direct buffer memory
线程堆栈:可通过-Xss调整大小,内存不足时抛出StackOverFlowError
相关文章推荐
- 深入理解JVM笔记五-调优案例分析与实战
- 笔记:深入理解JVM 第5章 调优案例分析与实战
- 深入理解JVM笔记五-调优案例分析与实战
- Java之JVM调优案例分析与实战(4) - 外部命令导致系统缓慢
- 深入学习Java JVM - 调优案例分析与实战
- Java之JVM调优案例分析与实战(5) - 服务器JVM进程奔溃
- Java之JVM调优案例分析与实战(2) - 集群间同步导致的内存溢出
- JVM调优案例分析与实战:高性能硬件上的程序部署策略
- 《深入理解JAVA虚拟机》笔记6——调优案例分析与实战
- JVM调优案例分析与实战
- JVM之调优案例分析与实战
- Java之JVM调优案例分析与实战(3) - 堆外内存导致的溢出错误
- Java之JVM调优案例分析与实战(1) - 高性能硬件上的程序部署策略
- 《Spark商业案例与性能调优实战100课》第1课:商业案例之通过RDD实现分析大数据电影点评系统中电影的用户行为信息
- 《Spark商业案例与性能调优实战100课》第18课:商业案例之NBA篮球运动员大数据分析代码实战之核心基础数据项编写
- Spark商业案例与性能调优实战100课》第11课:商业案例之通过纯粹通过DataFrame分析大数据电影点评系仿QQ和微信、淘宝等用户群分析与实战
- Spark商业案例与性能调优实战100课》第20课:大数据性能调优的本质和Spark性能调优要点分析
- Spark商业案例与性能调优实战100课》第16课:商业案例之NBA篮球运动员大数据分析系统架构和实现思路
- Spark商业案例与性能调优实战100课》第2课:商业案例之通过RDD实现分析大数据电影点评系统中电影流行度分析
- Spark商业案例与性能调优实战100课》第3课:商业案例之通过RDD分析大数据电影点评系各种类型的最喜爱电影TopN及性能优化技巧