0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Java:JVM虚拟机的入门知识

如意 来源:百家号 作者: 愿编程是诗 2020-07-01 11:43 次阅读

Java开发现在面试越来越难了,进大厂必备的JVM、多线程高并发这都是最基础的知识了,今天我们一起来学习Java虚拟机入门。

运行时数据区域

Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,主要有这么几个区域,并且对每个区域进行介绍。

Java:JVM虚拟机的入门知识

程序计数器

程序计数器(Program Counter Register)它是一块较小的内存空间,它是记录当前线程所执行到的字节码的行号。因为由于Java虚拟机的多线程是通过线程轮流切换、以及分配处理器执行时间的方式来实现的,一个处理器都只会执行一条线程中的指令。为了让线程切换后能够恢复到正常的执行位置,所以每一条线程都有一个独立的程序计数器,这样线程之间计数器互不影响。

Java:JVM虚拟机的入门知识

Java虚拟机栈

和程序计数器一样是线程私有,它的生命周期是与线程相同的。Java虚拟机是Java执行方法的内存模型,在每个方法执行时都会同步创建一个栈帧(Stack Frame),主要是用来存储:局部变量表、操作数栈、动态链接、方法出口等信息

本地方法栈

本地方法栈就是为虚拟机使用到的本地(Native) 方法服务的。

Java堆(Heap)

Java堆是虚拟机所管理的内存中最大的一块,是所有线程共享的一块区域,唯一的目的就是存放对象实例,并且是“几乎”所有的对象的实例都是在“Java堆”分配内存的。

同时Java堆也是垃圾收集器管理的内存区域,也称之为“GC堆”。由于现在基本采用分代回收垃圾器算法,所以Java堆又可以分为:新生代、老年代。

法区

方法区也是线程共享的内存区域,主要存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。

很多Java程序员都习惯在 HotSpot虚拟机上开发、部署程序,很多人都更愿意把方法区称呼为“永久代“。到了 JDK 8,终于完全废弃了永久代的概念,改用与JRockit、J9一样在本地内存中实现的元空间(Metaspace)来代替了。注意:这区域的内存回收目标主要是针对常量池的回收和对类型的卸载。

补充

运行时常量池:它是方法区的一部分,用于存放编译期生成的各种字面量与符号引用,这部分内容将在类加载后存放到方法区的运行时常量池中。对于初学者想深入JVM虚拟机原理,国内非常不错的深入理解Java虚拟机第三版这本,值得Java程序员看的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2903

    浏览量

    102978
  • JVM
    JVM
    +关注

    关注

    0

    文章

    152

    浏览量

    12126
  • 虚拟机
    +关注

    关注

    1

    文章

    852

    浏览量

    27345
收藏 人收藏

    评论

    相关推荐

    eclipse设置jvm内存大小

    内存大小,并对其背后的原理进行解释。 JVMJava虚拟机)是Java程序的运行环境,它负责将Java字节码翻译成机器码,以便在不同的平台
    的头像 发表于 12-06 11:43 723次阅读

    weblogic jvm参数配置

    在WebLogic中,JVM参数配置是非常重要的,它可以对应用程序的性能和稳定性产生直接影响。JVM参数通过调整Java虚拟机的运行时行为,可以优化内存管理、垃圾回收以及线程管理等方面
    的头像 发表于 12-05 14:31 479次阅读

    java虚拟机内存包括远空间内存吗

    Java虚拟机JVM)内存是Java程序执行时所使用的内存空间的总称,包括了Java堆、方法区、本地方法栈、
    的头像 发表于 12-05 14:15 180次阅读

    jvm内存区域中,哪一块是属于线程共享

    JVMJava虚拟机)是一种计算机软件,用于执行Java字节码。在JVM中,存在多个内存区域,包括线程共享的内存区域。本文将详细介绍
    的头像 发表于 12-05 14:14 544次阅读

    jvm运行时内存区域划分

    JVMJava Virtual Machine(Java虚拟机)的缩写,它是Java编程语言的运行环境。
    的头像 发表于 12-05 14:08 252次阅读

    jvm参数的设置和jvm调优

    JVMJava虚拟机)参数的设置和调优对于提高Java应用程序的性能和稳定性非常重要。在本文中,我们将详细介绍JVM参数的设置和调优方法。
    的头像 发表于 12-05 11:36 478次阅读

    jvm调优参数

    JVMJava虚拟机)是Java程序的运行环境,它负责解释Java字节码并执行相应的指令。为了提高应用程序的性能和稳定性,我们可以调优
    的头像 发表于 12-05 11:29 330次阅读

    jvm内存模型和内存结构

    JVMJava虚拟机)是Java程序的运行平台,它负责将Java程序转换成机器码并在计算机上执行。在J
    的头像 发表于 12-05 11:08 385次阅读

    jvm内存溢出该如何定位解决

    Java应用程序中,JVMJava虚拟机)内存溢出是指Java应用程序试图分配的内存超过了JVM
    的头像 发表于 12-05 11:05 566次阅读

    JVM指针压缩的工作原理

    当今,Java已经成为了世界上最流行的编程语言之一。在Java的生态系统中,JVMJava虚拟机)是至关重要的组成部分。
    的头像 发表于 10-16 15:08 310次阅读
    <b class='flag-5'>JVM</b>指针压缩的工作原理

    JVM知识体系剖析

    从源码到运行、类加载,再到内存分配和垃圾回收,以及JVM调优的技巧与实战。 理论-实战-面试三结合,带大家剖析整个JVM知识体系,一站解决JVM问题。 1、Oracle
    的头像 发表于 10-10 11:37 229次阅读
    <b class='flag-5'>JVM</b><b class='flag-5'>知识</b>体系剖析

    OOM会导致JVM虚拟机退出吗

    熟悉Java开发的人,应该会经常遇到的异常:OOM,那么这个异常会导致 JVM 虚拟机退出吗? 1、结论 Java虚拟机
    的头像 发表于 09-30 10:14 309次阅读

    详解Java虚拟机JVM内存布局

    JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的稳定高效运行。不同的JVM对于内存的划分方式和管理机制存在部分差异。结合
    的头像 发表于 07-13 09:52 316次阅读
    详解<b class='flag-5'>Java</b><b class='flag-5'>虚拟机</b>的<b class='flag-5'>JVM</b>内存布局

    深入浅出地介绍Java虚拟机的相关知识

    Java 虚拟机Java Virtual Machine,简称 JVM)是 Java 语言最核心的技术之一,也是
    的头像 发表于 06-06 14:49 2662次阅读

    JVM内存布局详解

    JVM内存布局规定了Java在运行过程中内存申请、分配、管理的策略,保证了JVM的稳定高效运行。不同的JVM对于内存的划分方式和管理机制存在部分差异。结合
    的头像 发表于 04-26 10:10 340次阅读
    <b class='flag-5'>JVM</b>内存布局详解