精神小伙儿探秘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、分布式)从底层原理到架构
每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求.像阿里.腾讯.美团.字节跳动.京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻 ...
最新文章
- springboot日志logback配置
- 如何在父进程中读取子(外部)进程的标准输出和标准错误输出结果
- LVM和raid结合使用
- 【经典回放】多种语言系列数据结构算法:希尔排序(C/C#版)
- ajax div 赋值重新渲染_优化向:单页应用多路由预渲染指南
- 拼多多、微博等在新一轮经济变化中将做出更大贡献
- 针对ASP.NET MVC的SEO优化笔记
- 卷积神经网络流程图_基于卷积神经网络的叶片气孔自动计数方法
- python 生成excel_python 数据生成excel导出(xlwt,wlsxwrite)代码实例
- fancybox 无效 失效 直接打开页面, ajax 之后 fancybox对更新的数据无效,Jquery失效 无效...
- 7. mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句
- NodeJs——子进程
- php yaf框架扩展实践一——配置篇
- 学生选课管理系统(python)
- 支付宝异步通知 java_java 支付宝支付 手机网站支付结果异步通知
- 三维球体史密斯圆图的发展与理解,史密斯圆图的最新发展
- 基于腾讯地图实现精准定位,实现微信小程序考勤打卡功能
- 数据结构教程(详细又简单——C语言实现)
- 游戏模型(3A)和影视模型(cg)的区别以及发展前景?
- ELK日志分析平台之kibana以及借助ELK平台实现网站访问量统计