美文网首页java编程/提升
初步了解jvm:jvm简介和简单调优

初步了解jvm:jvm简介和简单调优

作者: 程序员ken | 来源:发表于2020-11-12 23:06 被阅读0次

** 首先份上一份比较详细的java虚拟机的思维导图:** https://www.processon.com/view/5eafee726376897466a3a821#map

什么是jvm:

** 简述就是** : JVM是Java Virtual Machine(Java虚拟机)的缩写,java虚拟机本质上就是一个程序,当它在命令行上启动的时候,就开始执行保存在某字节码文件中的指令。通过jvm虚拟机可以实现跨平台运作。

file
  • 如图可以知道 jdk = java-tool + jre ,而jre 包含了jvm*
file

如图可以看出jvm在不同的操作系统可以生成不同 的机器码,这样就实现了跨平台使用。

jvm底层完整的运行示意图:

file file

栈:又叫线程站

栈内存 存放 程序运行的局部变量 =》如静态变量

每个线程运行 jvm都会在栈内存开辟一个空间

特性:先进后出 【FILO】

栈帧:JVM 执行 Java 程序时需要装载各种数据到内存中,不同的数据存放在不同的内存区中(逻辑上)

通过javap 命令将Math.class(就是上面的java代码的类) 反编译一下,后面形成的就是如下图所示的指令码


file
file file

ps: 方法出口就是a调用b的方法时“口子/位置” 就是b方法的出口

堆:

file

这个局部变量是对象类型(new出来的),然后会将这个对象的指针【内存地址】存放到堆里面。

堆的内部结构:
file

一般new出来的对象放在Eden区。【一旦Eden区放满了 =》**会触发 minor GC ** 1. 非垃圾对象就把它放进From区 同时jvm会分代年龄加一 2.把‘’垃圾‘’对象清理掉 】

什么是垃圾对象 :1.没有指针的对象 2.可达性分析算法

file

当老年代都放满了,就会触发Full GC。

jvm垃圾收集机制 简单讲解

下图是一个多线程程序 一直new对象 往【堆】内存里面放
file

下面是jvm的动态:


file

STW:Java中一种全局暂停现象,全局停顿,所有Java代码停止,native代码可以执行,但不能与JVM交互。会让应用程序暂时停止。

file

JVM调优的重点就是减少STW的次数 ,因为大并发的情况下 STW的影响是很大的 ,用户体验极度不好。

亿级电商流量的线上调优

一般亿级电商网站都是微服务架构,如图:


file

推算网站大促每秒订单数和机器分配资源 到消耗内存

file
file
file
file

推算一个订单对象的大小:一个对象一个1024个字节【1kb】 (ps:Int对象4个,string 占用最大字节= 长度*2)

file

ps: 在eden区能存活一次的对象 ,会被放入Survivor 区

一个对象是移动到老年代 而不是年轻代[Survivor 区],判断标准:
1.对象存活时间比较长【经过15次的MInor GC】
2.对象占用内存Survivor 区的一半内存【根据实际硬盘分配设置】,就会直接分配到老年代

如图中的对象jvm参数设置的
13秒后就会让eden区占满,
Survivor 区占100M内存,每次都会被分配到老年代,当5-6分钟后老年代占满了 触发Full GC ,从而出现应用卡顿/暂停的现象,这是我们不愿意见到的。所以需要jvm调优。

file

这样25秒左右才能占满Eden区,然后60M的对象也能放入survivor区(没超过其中一半),当survivor区放满是 会触发Minor Gc可以把之前的垃圾对象进行回收,一般情况下 就不会有什么对象进入老年代,不会触发Full GC

本文来源于:宋文超super,专属平台有csdn、思否(SegmentFault)、 简书、 开源中国(oschina)、掘金,转载请注明出处。

相关文章

  • 初步了解jvm:jvm简介和简单调优

    ** 首先份上一份比较详细的java虚拟机的思维导图:** https://www.processon.com...

  • java面试要求

    了解JVM运行机制,熟练JVM调优,了解内存管理熟悉大流量、高并发、高性能系统架构设计和研发了解大规模系统的负载均...

  • JVM 高频面试题

    本章面试题如下:JVM三大性能调优参数,JVM 几个重要的参数JVM调优JVM内存管理,JVM的常见的垃圾收集器,...

  • 技术文章罗列

    JVM JVM知识点详解JVM初步诊断JVM内存模型 Java Api java8 stream Api讲解(上)...

  • JVM性能调优

    JVM性能调优 JVM性能监控工具介绍

  • 调优进阶

    什么是调优? 根据需求进行JVM规划和预调优 优化运行JVM运行环境(慢,卡顿) 解决JVM运行过程中出现的各种问...

  • Java程序员必备技能内存管理机——垃圾标记

    前言 JVM垃圾回收这块的内容相对较多、较复杂。但是,想要做好JVM的性能调优,这块的内容又必须了解和掌握! 正文...

  • 02. 基于JDK命令行工具的监控

    JVM与调优 imooc JVM Markdown JVM参数类型 标准参数 -help-server -cli...

  • JVM 调优之 Eclipse 启动调优实战

    本文是我12年在学习《深入理解Java虚拟机:JVM高级特性与最佳实践》时,做的一个 JVM 简单调优实战笔记,版...

  • JVM调优(转)

    JVM调优 无监控不调优: Java内存区域划分 JVM采用垃圾的收集算法 JVM参数 Java对象分配顺序 在E...

网友评论

    本文标题:初步了解jvm:jvm简介和简单调优

    本文链接:https://www.haomeiwen.com/subject/rypmbktx.html