首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JVM 内存详解

简介 JVM 是 Java Virtual Machine(Java虚拟机)的缩写,JVM 是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。...JVM 内存结构 JVM 的内存空间分为 3 大部分: 堆内存: 方法区 栈内存 其中栈内存可以再细分为Java 虚拟机栈和本地方法栈,堆内存可以划分为新生代和老年代,新生代中还可以再次划分为 Eden...在 JDK8 之前的 HotSpot JVM,存放这些”永久的”的区域叫做“永久代(permanent generation)”。...永久代是一片连续的堆空间,在 JVM 启动之前通过在命令行设置参数-XX:MaxPermSize 来设定永久代最大可分配的内存空间,默认大小是 64M(64 位 JVM 默认是 85M)。...随着 JDK8 的到来,JVM 不再有 永久代(PermGen)。

1.4K30

JVM 垃圾回收详解

内存分配与回收策略JVM 在进行 GC 时,并非每次都对堆内存(新生代、老年代;方法区)区域一起回收的,大部分时候回收的都是指新生代。...主要用到三色标记里的**增量更新算法(见下面详解)做重新标记。**并发清理: 开启用户线程,同时GC线程开始对未标记的区域做清扫。...这个阶段如果有新增对象会被标记为黑色不做任何处理(见下面三色标记算法详解)。并发重置:重置本次GC过程中的标记数据。CMS 主要优点:并发收集、低停顿。...这种浮动垃圾只能等到下一次gc再清理了)它使用的回收算法-“标记-清除”算法会导致收集结束时会有大量空间碎片产生,当然通过参数-XX:+UseCMSCompactAtFullCollection可以让jvm

23120
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    超详细JVM详解

    如何用9部分详细阐述Java虚拟机:JVM 五、JVM的整体结构 HotSpot VM是目前市面上高性能虚拟机的代表作之一 它采用解释器与即时编译器并存的架构 在今天,Java程序的运行性能早已脱胎换骨...如何用9部分详细阐述Java虚拟机:JVM 涨知识!...如何用9部分详细阐述Java虚拟机:JVM 七、JVM的架构模型 Java编译器输入的指令流基本上是一种基于栈的指令集架构 ,另外一种指令集架构则是基于寄存器的指令集架构 具体来说这两种架构之间的区别:...大量的行业基准测试显示,JRockit JVM是世界上最快的JVM 使用JRockit产品,客户已经体验到了显著的性能提高(一些超过了70%)和硬件成本的减少(达50%)。...Micorsoft JVM 微软为了在IE3浏览器中支持Java Applets,开发了Microsoft JVM。 只能在window平台下运行。

    51700

    JVM内存模型详解

    在Java中,JVM内存模型主要分为堆,方法区,程序计数器,虚拟机栈,本地方法栈,如下图 ?...今天我们就分别讲解一下这几个区域的作用 堆 堆是JVM内存中最大的一块内存,该内存是被多有线程共享,几乎所有的对象和数组都在堆上分配,堆被划分为新生代和老年代,新生代又分为Eden和Survivor区,...(final修饰的变量) 符号应用则包括类和方法的权限定名,字段的名称和描述以及方法的名称和描述符 同时类加载到内存之后,JVM将class文件的常量池放到了运行时常量池,在解析阶段,JVM会把符号引用替换为直接引用...JVM的非堆内存中,但是在java8版本,使用元空间替代了永久代,除了静态变量和运行时常量还放在堆中,其余在方法区的信息都迁移到了元空间,而元空间是本地内存....: PermGen,这是因为java7指定永久代的大小是8M,而每次FULL GC的回收率偏低,不是很好,并且永久代的大小也依赖很多因素,如JVM加载的class总数,常量池的大小和方法的大小.

    45020

    详解Jvm内存结构

    近期在学习研究内存,那么Jvm内存结构和Jvm的内存模型即JMM(Java momery model)这两项内容都是学习java虚拟机、java内存知识的基础。...一、Jvm体系的内存结构图 JVM运行数据区,也就是我们所说的内存结构主要分为两个大区: 1、线程共享区 **方法区(Method Area)*存储运行时的常量池、被虚拟机加载过的类信息、常量、静态变量...size) { this.size = size; } } 上述代码,对照内存结构图的分布位置如下: 正如代码中的注释和上述代码片段在各区中的分布图,能很清晰的知晓Jvm...这篇是通过一个实例分析的方式,对jvm的内存结构有了更清晰的认识。如若想做更深度的了解,推荐《深入理解 Java 虚拟机》这本书籍。

    30810

    JVM内存结构详解

    文章目录 一、你了解JVM内存结构吗 在这之前需要知道 JVM内存结构图——JDK1.8 1.1、程序计数器 1.2、虚拟机栈(JVM Stack) 1.1.1、java.lang.StackOverflowError...问题 1.3、本地方法栈 1.4、元空间(MetaSpace) 1.4.1、MetaSpace相比PermGen的优势 1.5、Java堆(Heap) 二、JVM三大性能调优参数 -Xms -Xmx -...内存结构吗 在这之前需要知道 内存寻址过程 地址空间划分 内核空间是用于连接硬件,调度程序联网等服务 用户空间,才是java运行的系统空间 我们知道JVM是内存中的虚拟机,主要使用内存进行存储,所有类...1.2、虚拟机栈(JVM Stack) Java方法执行的内存模型 生命周期和线程是相同的,每个线程都会有一个虚拟机栈,栈的大小在编译期就已经确定了 栈的变量随着变量作用域的结束而释放,不需要jvm垃圾回收机制回收...还有就是,由JVM管理的虚拟机栈数量也是有限的,也就是线程数量也是有限定。 由于栈帧在方法返回后会自动释放,所有栈是不需要GC来回收的。

    41620

    JVM之内存结构详解

    同时,JVM也是面试环节的中重灾区。今天开始,《JVM详解》系列开启,带大家深入了解JVM相关知识。 我们不能为了面试而面试,但是学习会这些核心知识你必定会成为面试与工作中“最亮的一颗星”。...下面,开启我们的第一篇文章《JVM之内存结构详解》。 学习也是要讲究方式方法的,本系列学习过程中会引导大家通过《费曼学习法》来学习,同时尽量采用图文方式来进行讲解。正所谓一图胜千言。...有人会说,这些写代码好像又用不上,貌似所有的事情JVM都替我们做好了。那就,思考一下为什么要学习JVM虚拟机结构。 那你是否遇到这样的困惑:堆内存该设置多大?...如何进行JVM调优?JVM的垃圾回收是如何?甚至创建一个String对象,JVM都做了些什么? 这些疑问随着学习的深入都会慢慢得到解答,而要解决这些问题的第一步,就是先了解JVM的构成。...JVM内存结构 java虚拟机在执行程序的过程中会将内存划分为不同的数据区域,看一下下图。 ? 如果理解了上图,JVM的内存结构基本上掌握了一半。通过上图我们可以看到什么?外行看热闹,内行看门道。

    61050

    详解JVM类文件结构

    而JVM不仅具有平台无关性,还具有语言无关性: 平台无关性是指不同操作系统都有各自的JVM 语言无关性是指Java虚拟机能运行除Java以外的代码! 但JVM对能运行的语言是有严格要求的。...即JVM只认识class文件,它并不管何种语言生成了class文件,只要class文件符合JVM的规范就能运行。 因此目前已经有Scala、JRuby、Jython等语言能够在JVM上运行。...它们有各自的语法规则,不过它们的编译器都能将各自的源码编译成符合JVM规范的class文件,从而能够借助JVM运行它们。...Class文件是JVM的输入, Java虚拟机规范中定义了Class文件的结构。Class文件是JVM实现平台无关、技术无关的基础。...在高版本的JVM上能够运行低版本的class文件,但在低版本的JVM上无法运行高版本的class文件. 2.3 常量池 2.3.1 什么是常量池? 紧接着版本号之后的就是常量池.

    21510

    JVM面试题详解

    卸载二:描述一下 JVM 加载 Class 文件的原理机制?Java 语言是一种具有动态性的解释型语言,类(Class)只有被加载到 JVM 后才能运行。...隐式加载指的是程序在使 用 new 等方式创建对象时,会隐式地调用类的加载器把对应的类 加载到 JVM 中。...显示加载指的是通过直接调用 class.forName() 方法来把所需的类加载到 JVM 中。...JVM 的堆是运行时数据区,所有类的实例和数组都是在堆上分配内存。它在 JVM 启动的时候被创建。对象所占的堆内存是由自动内存管理系统也就是垃圾收集器回收。堆内存是由存活和死亡的对象组成的。...这两个方法用来提示 JVM 要进行垃圾回收。但是,立即开始还是 延迟进行垃圾回收是取决于 JVM 的。十二:finalize() 方法什么时候被调用?

    43141

    JVM调优工具详解

    学习了JVM的一些调优工具为大家分享一下,现在把学习笔记总结记录一下,如果记录有些错误,还望指出。...还可以用jvisualvm自动检测死锁只需要查看对应运行java的进程即可 三、Jinfo 查看正在运行的Java应用程序的扩展参数 查看jvm的参数 查看jvm的参数 jinfo -flags...尽量减少Full GC的频率,避免频繁Full GC对JVM性能的影响。...内存泄露到底是怎么回事 再给大家讲一种情况,一般电商架构可能会使用多级缓存架构,就是redis加上JVM级缓存,大多数同学可能为了图方便对于JVM级缓存就 简单使用一个hashmap,于是不断往里面放缓存数据...这种情况完全可以考虑采用一些成熟的JVM级缓存框架来解决,比如ehcache等自带一些LRU数据淘汰算法的框架来作为JVM级的缓存。

    42640

    JVM体系结构详解

    但是很多人不知道JRE是Java Virtual Machine(JVM)的实现,它分析字节码、解释代码并执行代码。作为开发者,了解JVM的体系结构非常重要,因为它使我们能够更有效地编写代码。...在本文中,我们将更深入地了解Java中的JVM体系结构和JVM的不同组件。 什么是JVM呢? 虚拟机是物理机的软件实现。Java是用WORA(编写一次运行到任何地方)的概念开发的,它在VM上运行。...编译器将Java文件编译成Java .class文件,然后将.class文件输入JVM, JVM加载并执行类文件。下面是JVM的架构图。 ? file JVM是如何工作的?...如图所示,JVM分为三个主要子系统: 类加载器子系统 运行时数据区 执行引擎 1. 类加载器子系统 Java的动态类加载功能由类加载器子系统处理。它装载的链接。...每个JVM只有一个方法区,它是资源共享的。 堆 –所有对象及其对应的实例变量和数组都将存储在这里。每个JVM也仅有一个堆。由于方法区和堆被多个线程共享内存,因此存储的数据不是线程安全的。

    52720

    JVM 内存区域划分详解

    JVM 作为 .class 文件的翻译存在, 输入字节码, 调用操作系统函数。 过程如下: Java 文件->编译器>字节码->JVM->机器码。...2、JVM、 JRE、 JDK 的关系 JVM 只是一个翻译, 把 Class 翻译成机器识别的代码, 但是需要注意, JVM 不会自己生成代码, 需要大家编写代码, 同时需要很多依赖类库, 这个时候就需要用到...JVM 的作用是: 从软件层面屏蔽不同操作系统在底层硬件和指令的不同。 这个就是我们在宏观方面对 JVM 的一个认识。...跨语言( 语言无关性) : JVM 只识别字节码, 所以 JVM 其实跟语言是解耦的, 也就是没有直接关联, JVM 运行不是翻译 Java 文件, 而是识别 class文件, 这个一般称之为字节码。...4、常见jvm实现 JVM内存模型 运行时数据区 运行时数据区的定义 Java 虚拟机在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域 在 JVM 中, JVM 内存主要分为堆

    34720

    JVM性能调优详解

    也是为了进行JVM性能调优做准备。...JVM调优的基本原则 JVM调优是一个手段,但并不一定所有问题都可以通过JVM进行调优解决,因此,在进行JVM调优时,我们要遵循一些原则: 大多数的Java应用不需要进行JVM优化; 大多数导致GC问题的原因是代码层面的问题导致的...JVM调优的步骤 一般情况下,JVM调优可通过以下步骤进行: 分析GC日志及dump文件,判断是否需要优化,确定瓶颈问题点; 确定JVM调优量化目标; 确定JVM调优参数(根据历史JVM参数来调整);...JVM参数 JVM调优最重要的工具就是JVM参数了。先来了解一下JVM参数相关内容。 -XX 参数被称为不稳定参数,此类参数的设置很容易引起JVM 性能上的差异,使JVM存在极大的不稳定性。...性能调优详解》 本文参考: (1)https://blog.csdn.net/jisuanjiguoba/article/details/80176223 (2)https://juejin.im/post

    1K30
    领券