精神小伙儿探秘JVM( 六)
JVM调优
连续研究了五篇,这次终于来到小高潮了,也是我最好奇的部分,JVM调优。作为Java小白,听到JVM调优不止一次。包括网上的视频,招聘岗位的要求等等,都会提到JVM调优。那么,JVM调优到底是啥?今天俺们就来瞅瞅。
调优调啥呢
JVM是Java虚拟机,是帮助字节码实际解释运行的东东。根据前面的探秘系列,不难看到,JVM这里头需要考虑的问题很多。主要就是对象的生成创建以及GC回收,新生代老年代的判定处理。其中的算法,处理机制的不同,会很大程度的影响JVM性能。而通过JVM对外提供的参数设置,可以影响JVM的GC回收机制,进而提升优化JVM的性能。这就是JVM调优。
开调
知道了调啥,开调就完了。主要方式有两种。
使用64位JDK管理大内存
使用64位内存,会增大堆空间,降低担保风险。但堆内存的扩大,垃圾收集频率虽然降低了,但每次垃圾收集耗时会大大增加。14G堆Full GC可达数十秒。如果频繁GC,用户就疯了。
使用这个方式前提是GC频率不高,或者交互没那么频繁,不会影响到用户使用。带来的问题如下:
1.回收时间长;
2.目前64位JDK性能跟不上;
3.一旦内存溢出,将产生超过10G的Dump文件,分析会非常崩溃,几乎无法定位;
4.同样程序,64位比32位JDK更吃内存,因为指针膨胀和内存补齐的原因。
使用32位JVM建立逻辑集群
在一台机器上,启动多个应用服务的进程,每个进程分配一个端口,然后在前端整个负载均衡器,以反向代理方式分配请求。好吧,这是我抄来的,懵了,这是啥意思?百度吧。盗图如下。
负载均衡就是一种软件或者硬件。前端发来的请求,通过它合理均衡的分配给后端服务器。避免出现一些服务器忙死一些又闲死的情况。在这里,使用一台机器,但每个应用都有个自己的进程端口,通过负载均衡器的分配,前端的请求平均分配给各个服务进程。
完了啥又是反向代理?有反就有正。代理就是个代理人,正向代理,是内网通过代理访问外网。这个就是正向的。反向就是反过来,外网通过代理访问内网。比如你在公司上家里头电脑,就是正向代理;在家远程公司电脑,就是反向代理。擦,就这?!
通过反向代理,把客户端发来的请求,分配给了服务器。由于是在同一台机器上,所以使用无Session复制的亲和式集群是不二选择。这种方式,均衡器会按照一定的规则,普遍是SessionID进行分配,将一个固定的用户请求永远给一个固定的集群节点进行处理。这里头这个Session复制涉及到Session服务器,以后会专门详细唠唠。
感觉这个还是没理解透,之后会结合实战再深入研究下。下期先把类文件整明白了。‘
JVM需调优,参设设置有讲究;理解还需加实战,日后必须搞清楚。
精神小伙儿探秘JVM( 六)相关推荐
- jvm六:主动使用(1.new一个对象, 2.反射)
new一个对象 package com.atChina.jvm;public class Test4 {public static void main(String[] args) {// 所有的ja ...
- 一步步优化JVM六:优化吞吐量[转]
2019独角兽企业重金招聘Python工程师标准>>> 原文:http://ganlv.iteye.com/blog/1571315 参考:http://www.myexceptio ...
- JVM(六)---jvm压缩指针
一 什么是oop OOP = "ordinary object pointer" 普通对象指针. 启用CompressOops后,会压缩的对象: 1. 每个Class的属性指针(静 ...
- 浅谈JVM(六):方法调用过程
上一篇: 浅谈JVM(一):Class文件解析 浅谈JVM(二):类加载机制 浅谈JVM(三):类加载器和双亲委派 浅谈JVM(四):运行时数据区 浅谈JVM(五):虚拟机栈帧结构 6.方法调用过程 ...
- 【深入理解JVM 六】虚拟机字节码执行系统
前边几篇Blog分别介绍了JVM的类加载机制.运行时数据区域,那么字节码文件已然被加载到了JVM的内存中来,接下来就是执行它了.虚拟机字节码执行引擎的位置如下图所示,除了本地方法栈,其他运行时数据区域 ...
- JVM(六) - JVM调优
前言 JVM调优主要是调整下面两个指标 停顿时间:垃圾收集器做垃圾回收中断应用执行的时间.-XX:MaxGCPauseMillis 吞吐量:垃圾收集的时间和总时间占比:1/(1+n) ,吞吐量为:1- ...
- fegin需要实现类_深入理解JVM(六)--虚拟机类加载机制
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 类从被加载到虚拟机内存开始,到卸载出内存为止 ...
- 探秘JVM(二)——编译进行时
编译进行时 转载于:https://www.cnblogs.com/zipei/p/6181462.html
- 1000道最新高频Java面试题,覆盖25个技术栈(多线程、JVM、高并发、spring、微服务、kafka,redis、分布式)从底层原理到架构!
每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求.像阿里.腾讯.美团.字节跳动.京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻 ...
- 1000道最新大厂高频Java面试题,覆盖25个技术栈(多线程、JVM、高并发、spring、微服务、kafka,redis、分布式)从底层原理到架构
每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求.像阿里.腾讯.美团.字节跳动.京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻 ...
最新文章
- 集成模型Xgboost!机器学习最热研究方向入门,附学习路线图
- 如何判断离散数组 是递增趋势_期货交易中,如何通过交易周期判断趋势,做到顺势而为?...
- Haproxy反向代理WebSocket的方法
- Linux硬链接和符号链接(转)
- linux锐捷代码_锐捷 for linux - 沈阳建筑大学
- android GPS开发
- 研发团队管理实践总结
- cocos2dx 游戏中内存优化
- On the eighth day
- 经典的图像分割方法总结
- PupilNet: Convolutional Neural Networks for Robust Pupil Detection
- 如何获取阿里云服务器镜像
- 记录一次关于百度网盘打开提示页面不存在的问题(吃相不要太难看)
- 用借款方实际付出的手续费(或利息)计算真实的手续费率(或利率),或快速估算年利率
- Rust websocket 客户端实现
- 风向值与风向描述定义
- 英文版windows 中文软件乱码的解决方案:设置Locale
- DIE(一个JS引擎Fuzzing工具)安装教程
- sklearn线性回归,支持向量机SVR回归,随机森林回归,神经网络回归参数解释及示例
- c语言long long是什么意思,long是什么意思_long在线翻译_英语_读音_用法_例句_海词词典...