美文网首页Spring-BootJava学习笔记
Java程序员:不识Jvm真面目,只缘身在增删查改中

Java程序员:不识Jvm真面目,只缘身在增删查改中

作者: d2890c1dd688 | 来源:发表于2019-01-10 21:48 被阅读21次

    前言

    JVM是java的核心和基础,在java编译器和os平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机,可以在上面执行java的字节码程序。

    java编译器只需面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译器,编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。

    这里就给大家讲一下JVM。

    技术大咖带你垂直打击JVM

    什么是运行时数据区? 我们一起来分享。

    了解JVM底层原理,让你的代码撸得飞起。

    搞定内存溢出,涨薪升职。

    涨见识,字节码执行过程分析。

    直击真相,原理和代码全都有。

    测试、效果演示及总结。

    JVM是什么?

    JDK: java development kit (Java开发工具包) 编译、反编译、调试等。

    JRE: java runtime enviroment (Java运行环境)

    JVM: java Virtual Mechinal (Java虚拟机) 一次编写,到处运行!

    学jvm的目就是:

    提升代码质量、解决项目问题。

    面试!面试!还是面试!

    JVM是怎么玩的

    类加载器:Class字节码文件加载到内存

    执行引擎:解析字节码指令,得到执行结果

    运行时数据区

    JVM运行时数据区

    线程私有

    程序计数器

    虚拟机栈

    本地方法栈

    线程共享

    方法区

    BAT的JVM面试题

    JVM什么情况下会发生栈内存溢出?

    JVM中一次完整的GC流程是怎样的?

    GC——垃圾回收

    完整意味着有多种情况

    程序计数器

    指向当前线程正在执行的字节码指令的地址(行号)

    栈是什么?

    栈(Stack)

    入口和出口只有一个

    入栈

    出栈

    FILO

    先进后出

    虚拟机栈

    虚拟机栈

    创建一个线程就为线程分配一个虚拟机栈,它又会包含多个栈帧,因为每运行一个方法就创建一个栈帧。

    运行时才有数据

    栈帧

    运行一个线程中的一个方法

    局部变量表

    操作数栈

    动态连接

    返回地址

    深入理解虚拟机栈

    演示一段代码的方法的执行过程

    代码:

    public int calc(){

    int a=100;

    int b=200;

    int c=300;

    return(a+b)*c;

    }

    虚拟机栈的异常

    StackOverFlowError异常

    原因:执行的虚拟机栈深度大于虚拟机栈允许的最大深度(方法的递归调用)。

    解决办法:增加默认栈的容量。

    栈容量 -Xss 默认1M

    OutOfMemeoryError异常

    原因:多线程环境下虚拟机在扩展栈时无法申请到足够的内存空间。

    解决办法:减少默认栈的容量来换取更多的线程支持。

    JVM中线程共有的内存区域

    Java堆

    Java堆是被所有线程共享的一块内存区域

    所有的对象实例以及数组要在堆上分配

    元数据区

    老版本名称:方法区(永久代)

    类信息、常量、编译后的代码信息

    直接内存

    以上源于一个视频讲解的概述总结,后续将分享后半部分的内容:

    可达性分析算法——GC Roots

    JVM中的堆

    新生代为什么分三个区?

    新生代对象的分配和回收

    老年代对象的分配和回收

    JVM中一次完整的GC流程是怎样的?

    如果有兴趣想了解视频具体内容的可以关注我,加一下我的合作群:805685193 可获取原视频

    还有一些Java架构视频讲解,需要获取Dubbo、Redis、设计模式、Netty、zookeeper、Spring cloud、分布式、高并发等架构技术视频教程资料,架构思维导图,和BATJ面试题及答案的,都是免费分享的。

    相关文章

      网友评论

        本文标题:Java程序员:不识Jvm真面目,只缘身在增删查改中

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