首页
学习
活动
专区
工具
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.3K30

JVM 垃圾回收详解

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

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

    超详细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平台下运行。

    50200

    JVM内存模型详解

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

    43820

    详解Jvm内存结构

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

    28610

    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来回收的。

    38620

    JVM之内存结构详解

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

    59650

    JVM 类加载机制详解

    JVM 类加载机制详解 类加载 什么是类的加载 jvm将class文读取到内存中,经过对class文件的校验、转换解析、初始化最终在jvm的heap和方法区分配内存形成可以被jvm直接使用的类型的过程。...如果有了直接引用,那引用的目标必定已经在内存中存在 初始化 初始化阶段是类加载最后一个阶段,前面的类加载阶段之后,除了在加载阶段可以自定义类加载器以外,其它操作都由JVM主导。...类加载器 虚拟机设计团队把加载动作放到JVM外部实现,以便让应用程序决定如何获取所需的类,JVM提供了3种类加载器: 启动类加载器(Bootstrap ClassLoader):负责加载 JAVA_HOME...JVM通过双亲委派模型进行类的加载,当然我们也可以通过继承java.lang.ClassLoader实现自定义的类加载器 当一个类加载器收到类加载任务,会先交给其父类加载器去完成,因此最终加载任务都会传递到顶层的启动类加载器

    39310

    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

    96430

    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 内存主要分为堆

    32620

    JVM参数详解及OOM

    JVM参数 堆的限制 JVM中最大堆大小有三方面限制: 相关操作系统的数据模型(32-bt还是64-bit)限制 系统的可用虚拟内存限制 系统的可用物理内存限制 32位系统下,一般限制在1.5G~2G;...64为操作系统对内存无限制 堆参数 -Xmx: 指定JVM的最大堆大小,如:-Xmx=2g -Xms: 指定JVM的最小堆大小,如:-Xms=2g,高并发应用,建议和-Xmx一样,防止因为内存收缩/突然增大带来的性能影响...-Xmn: 指定JVM中NewGeneration的大小,如:-Xmn256m。这个参数很影响性能,如果程序需要比较多的临时内存,可以适当设置高点。...-XX:PermSize: 指定JVM中PermGeneration的最小值,如:-XX:PermSize=32m,在Java8中此参数被忽略,永久代由元空间代替。...JDK 8的HotSpot JVM现在使用的是本地内存来表示类的元数据,这个区域就叫做元空间,绝大多数的类元数据的空间都从本地内存中分配。

    3.4K60

    JVM虚拟机详解

    pubg.jpg 1、 什么是JVM?   ...JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。...JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。...3、JVM原理   Java编译器只要面向JVM,生成JVM能理解的代码或字节码文件。Java源文件经编译成字节码程序,通过JVM将每一条指令翻译成不同平台机器码,通过特定平台运行。...(3)想要了解更多JVM虚拟机以及JVM性能调优的,可以关注我一下,我后续也会整理更多Java架构这一块的知识点分享出来,另外顺便给大家推荐一个Java程序员中高级程度的交流学习群:650385180,

    70420
    领券