首页
学习
活动
专区
圈层
工具
发布

【JVM 札记】浅谈 JVM

JVM 是每个 Java 程序员必学的内容,毕竟 Java 运行在 JVM 之上。...在我们通过 java 执行一个 .class 文件时(比如 HelloWorld.class)文件时,就会启动一个 JVM,此时 JVM 是操作系统上的一个进程,当程序执行完成后,JVM 进行随之退出。...JVM 虽然是 Java 虚拟机,但是 JVM 是一个标准,通常我们说的 JVM 实际指的是 Oralce 的 HotSpot 实现。既然 JVM 是标准,那么就可以有多种实现。...又因为 JVM 是标准,我们可以理解为它对 .class 文件进行了标准化,那么无论是什么语言,只要编译后的能生成符合 JVM 标准的 .class 文件,就可以运行在 JVM 之上。...JVM 其实也是如此,比较常说的 JVM 的垃圾回收,不就是 JVM 对内存的管理方式么。

49910

JVM之JVM初探

JVM初探 JVM 执行文件 类装入子系统 执行引擎 垃圾回收器 堆中的内存回收 方法区中的内存回收 关于回收的那些事 JVM 执行文件 JVM执行的文件为class文件,这个执行文件是什么意思呢,就是虚拟机能够识别的文件...,类加载器加载链接初始化后将数据保存在JVM运行时数据区中的文件。...类装入子系统 JVM的类加载器为ClassLoader采用双亲委派模型机制进行加载类。...即解释器先运行一段时间才能够真正提升效率); 垃圾回收器,Java能够流行的一个原因还有这个特点:他不用管理内存,由JVM的垃圾回收器自动进行回收垃圾,达到管理内存的目的。...垃圾回收器 JVM运行时内存结构为:PC程序计数器、本地方法栈、虚拟机栈、堆、方法区。

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

    JVM初探 -JVM内存模型

    JVM是每个Java开发每天都会接触到的东西, 其相关知识也应该是每个人都要深入了解的. 但接触了很多人发现: 或了解片面或知识体系陈旧....因此最近抽时间研读了几本评价较高的JVM入门书籍, 算是总结于此....JVM 内存区域 JVM会将Java进程所管理的内存划分为若干不同的数据区域. 这些区域有各自的用途、创建/销毁时间: ? 一....不同于OS以进程为单位调度, JVM中的并发是通过线程切换并分配时间片执行来实现的. 在任何一个时刻, 一个处理器内核只会执行一条线程中的指令....Method Area(方法区) 即我们常说的永久代(Permanent Generation), 用于存储被JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据.

    1.1K40

    jvm(1):jvm内存模型

    身为一个职业的Java程序员,每天打交到最多的就是jvm,那么套用孙子的一句话“知己知彼方能百战不殆”,熟悉jvm也就意味着是我们进阶路上必过之槛,下面先来张图,大概说明下jvm的内存分布 ?...方法区与堆空间类似,是被JVM中所有的线程共享的区域。方法区中最为重要的是类的类型信息、常量池、域信息、方法信息。类型信息包括类的完整名称、父类的完整名称、类型修饰符和类型的直接接口。...Java堆:堆在JVM规范里是一种通用性的内存池,用于存放所有的Java对象。堆是一个运行时数据区,类的对象从中分配空间,堆的优势是可以动态地分配内存大小,生存周期也不需要事先告诉编译器。...methodPointerEscape().printClassName(this);//实例引用发生逃逸 } } 通过上面的例子我们可知,逃逸分析通常是全局变量赋值、方法返回值、实例引用传递(详见另一篇文章) 虚拟机栈:JVM

    98230

    JVM初探 -JVM内存模型

    JVM花费过多时间来进行内存回收 3....二、JVM内存空间管理 根据JVM规范,JVM把内存划分了如下几个区域: 1. 方法区 2. 堆区 3. 本地方法栈 4. 虚拟机栈 5....对于堆区大小,可以通过参数-Xms和-Xmx来控制,-Xms为JVM启动时申请的最新heap内存,默认为物理内存的1/64但小于1GB;-Xmx为JVM可申请的最大Heap内存,默认为物理内存的1/4但小于...1GB,默认当剩余堆空间小于40%时,JVM会增大Heap到-Xmx大小,可通过-XX:MinHeapFreeRadio参数来控制这个比例;当空余堆内存大于70%时,JVM会减小Heap大小到-Xms指定大小...另一个通常采用串行GC的场景就是一台机器运行多个JVM虚拟机的情况(JVM虚拟机个数大于CPU核心数),在这种场景下,当一个JVM进行垃圾回收时只利用一个处理器,不会对其它JVM造成较大的影响。

    1.2K20

    【JVM 札记】JVM 内存划分

    Java 之所以能够跨平台,完全仰仗于 JVM,JVM 作为操作系统中的一个进程而存在。它主要用来将 .class 文件翻译成二进制的机器码并在 CPU 上进行执行。...是否有必要学习 JVM 为什么要了解 JVM 的内存划分或者内存管理呢?其实本身我觉得是没有太多必要的,因为作为一个普通的程序员而言,去了解它是一种破坏黑盒子的行为。...为什么进行内存划分 既然需要了解 JVM 的内存划分,那么就先说说 JVM 为什么要进行内存划分呢?这个其实比较好理解,因为这种划分区域的方式可以说随处可见。...当然了,虽然这是事实,但是也并不说明内存按属性划分的管理方式有问题) JVM 内存大致划分 JVM 作为虚拟机的存在可以被认为是一台独立的机器,.class 作为 JVM 上的可执行文件,因此,JVM...当然了,如果工作中真的能用到 JVM,或者也真的需要用到 JVM 那就另当别论了。(面试要问的话,也得准备!!)

    35510

    JVM

    Java 程序中的内存分配和回收都由 JVM 管理,不支持程序员直接对内存地址进行操作。不容易出现内存泄漏和内存溢出问题。----内存空间进程是分配资源的基本单位。...JDK 1.7 后 JVM 将常量池从方法区中移出,改为在堆中开辟空间存放。栈区(Stack) 存放线程执行 Java 方法调用的内存数据。...类加载检查JVM 接收到 new 指令,首先检查该类是否在常量池中,然后检查该类是否已被加载、解析和初始化。如果没有则先加载类,类加载器会将类的字节码文件放入 JVM 解析。...// trueSystem.out.println(str1 == str3); // falseCopy to clipboardErrorCopied包装类型JVM...如果 JVM 已无法分配足够的内存,将会抛出 OutOfMemoryError 导致程序崩溃。同时为了更合理地使用内存,Java 会由虚拟机对堆区内存空间自动进行垃圾回收。

    57440

    JVM

    重学Java系列之深入理解JVM虚拟机开篇:JVM介绍与知识脉络梳理 重学Java系列之深入理解JVM虚拟机1:JVM内存的结构与永久代的消失 重学Java系列之深入理解JVM虚拟机2:垃圾回收器详解...重学Java系列之深入理解JVM虚拟机3:Java class介绍与解析实践 重学Java系列之深入理解JVM虚拟机4:虚拟机字节码执行引擎 重学Java系列之深入理解JVM虚拟机5:深入理解JVM类加载机制...重学Java系列之深入理解JVM虚拟机6:JNDI,OSGI,Tomcat类加载器实现 重学Java系列之深入理解JVM虚拟机7:Java的编译期优化与运行期优化 重学Java系列之深入理解JVM虚拟机...8:JVM监控工具与诊断实践 重学Java系列之深入理解JVM虚拟机9:JVM常用参数以及调优实践 重学Java系列之深入理解JVM虚拟机10:JVM性能管理神器VisualVM介绍与实战 重学Java...系列之深入理解JVM虚拟机11:再谈四种引用及GC实践 补充 对于 JVM 方面的知识的巩固与其在网上看一些零零碎碎的文章不如啃一下这本书。

    80800
    领券