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( 六)相关推荐

  1. jvm六:主动使用(1.new一个对象, 2.反射)

    new一个对象 package com.atChina.jvm;public class Test4 {public static void main(String[] args) {// 所有的ja ...

  2. 一步步优化JVM六:优化吞吐量[转]

    2019独角兽企业重金招聘Python工程师标准>>> 原文:http://ganlv.iteye.com/blog/1571315 参考:http://www.myexceptio ...

  3. JVM(六)---jvm压缩指针

    一 什么是oop OOP = "ordinary object pointer" 普通对象指针. 启用CompressOops后,会压缩的对象: 1. 每个Class的属性指针(静 ...

  4. 浅谈JVM(六):方法调用过程

    上一篇: 浅谈JVM(一):Class文件解析 浅谈JVM(二):类加载机制 浅谈JVM(三):类加载器和双亲委派 浅谈JVM(四):运行时数据区 浅谈JVM(五):虚拟机栈帧结构 6.方法调用过程 ...

  5. 【深入理解JVM 六】虚拟机字节码执行系统

    前边几篇Blog分别介绍了JVM的类加载机制.运行时数据区域,那么字节码文件已然被加载到了JVM的内存中来,接下来就是执行它了.虚拟机字节码执行引擎的位置如下图所示,除了本地方法栈,其他运行时数据区域 ...

  6. JVM(六) - JVM调优

    前言 JVM调优主要是调整下面两个指标 停顿时间:垃圾收集器做垃圾回收中断应用执行的时间.-XX:MaxGCPauseMillis 吞吐量:垃圾收集的时间和总时间占比:1/(1+n) ,吞吐量为:1- ...

  7. fegin需要实现类_深入理解JVM(六)--虚拟机类加载机制

    虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验.转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制. 类从被加载到虚拟机内存开始,到卸载出内存为止 ...

  8. 探秘JVM(二)——编译进行时

    编译进行时 转载于:https://www.cnblogs.com/zipei/p/6181462.html

  9. 1000道最新高频Java面试题,覆盖25个技术栈(多线程、JVM、高并发、spring、微服务、kafka,redis、分布式)从底层原理到架构!

    每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求.像阿里.腾讯.美团.字节跳动.京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻 ...

  10. 1000道最新大厂高频Java面试题,覆盖25个技术栈(多线程、JVM、高并发、spring、微服务、kafka,redis、分布式)从底层原理到架构

    每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求.像阿里.腾讯.美团.字节跳动.京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻 ...

最新文章

  1. 集成模型Xgboost!机器学习最热研究方向入门,附学习路线图
  2. 如何判断离散数组 是递增趋势_期货交易中,如何通过交易周期判断趋势,做到顺势而为?...
  3. Haproxy反向代理WebSocket的方法
  4. Linux硬链接和符号链接(转)
  5. linux锐捷代码_锐捷 for linux - 沈阳建筑大学
  6. android GPS开发
  7. 研发团队管理实践总结
  8. cocos2dx 游戏中内存优化
  9. On the eighth day
  10. 经典的图像分割方法总结
  11. PupilNet: Convolutional Neural Networks for Robust Pupil Detection
  12. 如何获取阿里云服务器镜像
  13. 记录一次关于百度网盘打开提示页面不存在的问题(吃相不要太难看)
  14. 用借款方实际付出的手续费(或利息)计算真实的手续费率(或利率),或快速估算年利率
  15. Rust websocket 客户端实现
  16. 风向值与风向描述定义
  17. 英文版windows 中文软件乱码的解决方案:设置Locale
  18. DIE(一个JS引擎Fuzzing工具)安装教程
  19. sklearn线性回归,支持向量机SVR回归,随机森林回归,神经网络回归参数解释及示例
  20. c语言long long是什么意思,long是什么意思_long在线翻译_英语_读音_用法_例句_海词词典...

热门文章

  1. 2年前我从华为外包辞职,如今干到创业公司倒闭,36岁的我该何去何从?
  2. android程序设计排序方法,Android编程实现对文件夹里文件排序的方法
  3. CATIA二次开发(一):CAA简介
  4. mysql语句alter table_sql语句中ALTER TABLE MODIFY和ALTER TABLE CHANGE的区别?
  5. 遭遇应用程序正常初始化失败
  6. 站点LOGO开通注意事项,百度LOGO权限开通的技巧
  7. Flask--网页微信登陆示例
  8. 宁芝普拉姆键盘说明书及帮助文档支持宏定义
  9. 机器人导航,人工势场法的地图导航规划
  10. 神经网络和深度学习-习题