JVM调整--GC调优三选二原则
来源:互联网 发布:程序员远程工作招聘 编辑:程序博客网 时间:2024/06/07 09:34
我们试着回答这样的问题:什么样的应用系统需要怎么样的JVM调整或是业务调整?
结算系统,是我们的内部管理系统,这个与其他面向终端用户的系统有哪些差异?对我们的系统有哪些要求?
1、批量操作是常态
业管或是结算人员每天有一些批量数据处理的刚性需求。限制住条数,控制住数量需要和相关人员沟通合理的方式。
2、时效性有要求,但可以忍受
内部管理系统与最终用户使用的系统主要区别就是对响应性的要求。延迟越大,用户流失相对越严重。
这也要求我们针对不同的系统特征,做出不同的JVM或是业务调整要求。
单单JVM调整来说。我们现在回到,我们需要多大的内存?
这个是持续跟进监控得出的数据(系统稳态跟踪计算得出)。
但总有一些建议的原则:比如,我们使用什么样的垃圾收集器?JAVA运行的程序,我们一般在吞吐量,响应性(延迟),内存占用做选择。
在对JVM垃圾回收,一般有三个原则
1、minorGC回收原则
就是都希望短生命周期的对象都尽量在新生代被回收
2、GC内存最大化原则
处理吞吐量与延迟问题时,垃圾处理器能使用的内存越大,即Java堆空间越大,垃圾搜集的效果越好,应用程序越流畅。
3、GC调优三选二原则
在这三个性能属性(吞吐量,延迟,内存占用)选择两个调优。
另:现在我们业务框架使用springmvc+spring+hibernate+mybatis+....大量第三方框架,特别是对json,xml等数据处理jar包。再加上业务数据处理逻辑。
我们使用4G内存,大么?或是有天我们调整8G、16G、乃至32G内存,会感觉惊讶么?没有什么惊讶的!!!
系统伸缩性,一个方面讲scale up,一个方面讲scale out。要充分相信现代JVM(64位)虚拟机对我们程序的优化处理。
现在使用的这些框架,开发人员写个内存泄露的程序,要比写个正常的程序要难得多。一般我们遇到OOM无外乎以下几种(包括但不限于)
1、查询无分页
2、导入大量数据无控制
3、导出大量数据无控制
4、线程等待IO处理,大量线程挂起状态
等等
避免上述情况的出现,正常的业务处理数据量来了以后,我们要做的就是scale,选择up或是out,就是一个选择的问题了。
0 0
- JVM调整--GC调优三选二原则
- 调整JVM GC ( v1.3.1)
- 调整JVM ( v1.3.1) GC
- JVM性能调整 - GC调整策略
- JVM GC调整优化过程全揭秘
- JVM GC调整优化过程全揭秘
- JVM GC调整优化过程全揭秘
- JVM GC
- JVM GC
- JVM GC
- JVM GC
- GC&JVM
- jvm-GC
- JVM-GC
- JVM GC与频繁GC
- JVM GC与频繁GC
- JVM GC的Heap
- JVM GC的Heap
- 知乎live,linkedin数据总监李玥
- Fork/Join-Java并行计算框架
- iptables中用hashlimit来限速
- OpenStack-M版(Mitaka)搭建- – -镜像服务(Glance)篇
- 【TensorFlow】tf.nn.softmax_cross_entropy_with_logits的用法
- JVM调整--GC调优三选二原则
- Java Web开发中路径问题小结
- 一些常见程序的Nginx伪静态配置规则
- leetcode_22. Generate Parentheses 生成括号,给n对括号,有多少种括号生成方式
- Android_支持下拉刷新和加载更多的ExpandableListView
- 一个经典例子让你彻彻底底理解java回调机制
- Android中的常用框架:
- ubuntu网络配置和排错
- 按钮动画