理解何为JVM?掌握Java虚拟机构成精髓
![]()
当开发人员谈论JVM时,我们通常是指在一台机器上运行的进程,尤其是服务器,它代表并控制Java应用程序的资源使用情况。这些是参照JVM规范实现的的——所谓JVM规范,其描述了构建执行这些任务的程序的要求。 那么,谁开发和维护JVM? ——JVM由一些非常聪明的程序员、公司和开源组织来广泛部署、大量使用、升级开发和维护的。 OpenJDK项目是Sun Microsystems决定开源Java的后代。Sun被Oracle收购,OpenJDK继续通过Oracle来对Java管理,现在由Oracle工程师完成了大量繁重工作。 2.JVM中内存管理 与正在运行的JVM最常见的交互是检查堆(Heap)和堆栈(stack,简称为栈)中的内存使用情况。 最常见的调整是调优JVM的内存设置。 2.1.垃圾回收 在Java之前,所有程序内存都由程序员管理。 在Java中,程序内存由JVM管理。 JVM通过称为垃圾收集的进程来管理内存,该进程持续识别并消除Java程序中未使用的内存。 垃圾收集发生在正在运行的JVM中。 在早期,Java因为没有像C那样"接近源质(close the metal)"而受到很多批评,因此没有那么快。 垃圾收集过程尤其引起争议。 从那时起,已经提出了各种算法和方法,并用于垃圾收集。 随着兼容性开发和优化,垃圾收集得到了极大的改进。 注:接近源质是什么意思? ——当程序员说编程语言或平台"接近源质"时,我们的意思是开发人员能够以编程方式(通过编写代码)管理操作系统的内存。 从理论上讲,程序员可以通过规定使用多少以及何时丢弃它,以便从我们的程序中获得更多性能。 在大多数情况下,将内存管理委派给高度精炼的流程(如JVM)可以产生超过你自己管理的更好性能和更少错误。 3. JVM分为三部分 3.1.JVM规范 首先,JVM是一个软件规范。 以某种通告或宣告方式表达其要求,JVM规范强调其实现细节不在其规范中具体定义,以便在其实现中实现***的创造性(如下通告要求): "要正确实现Java虚拟机,您只需要能够读取类文件格式并正确执行其中指定的操作。" 还有这样的例子,如J.S. 巴赫(Bach)曾经类似的描述过音乐创作: "你所要做的就是在合适的时间触碰那正确的调调(就是音乐家或唱歌所说那个key,键)。" 因此,JVM所要做的就是正确运行Java程序。 听起来很简单,甚至可能从外面看起来也很简单,但这是一项艰巨的任务,特别是考虑到Java语言的强大功能和灵活性。 注意,JVM就是个虚拟的机器,可进一步描述如下:
当开发人员谈论JVM时,我们通常是指在一台机器上运行的进程,尤其是服务器,它代表并控制Java应用程序的资源使用情况。这些是参照JVM规范实现的的——所谓JVM规范,其描述了构建执行这些任务的程序的要求。 那么,谁开发和维护JVM? ——JVM由一些非常聪明的程序员、公司和开源组织来广泛部署、大量使用、升级开发和维护的。 OpenJDK项目是Sun Microsystems决定开源Java的后代。Sun被Oracle收购,OpenJDK继续通过Oracle来对Java管理,现在由Oracle工程师完成了大量繁重工作。 2.JVM中内存管理 与正在运行的JVM最常见的交互是检查堆(Heap)和堆栈(stack,简称为栈)中的内存使用情况。 最常见的调整是调优JVM的内存设置。 2.1.垃圾回收 在Java之前,所有程序内存都由程序员管理。 在Java中,程序内存由JVM管理。 JVM通过称为垃圾收集的进程来管理内存,该进程持续识别并消除Java程序中未使用的内存。 垃圾收集发生在正在运行的JVM中。 在早期,Java因为没有像C那样"接近源质(close the metal)"而受到很多批评,因此没有那么快。 垃圾收集过程尤其引起争议。 从那时起,已经提出了各种算法和方法,并用于垃圾收集。 随着兼容性开发和优化,垃圾收集得到了极大的改进。 注:接近源质是什么意思? ——当程序员说编程语言或平台"接近源质"时,我们的意思是开发人员能够以编程方式(通过编写代码)管理操作系统的内存。 从理论上讲,程序员可以通过规定使用多少以及何时丢弃它,以便从我们的程序中获得更多性能。 在大多数情况下,将内存管理委派给高度精炼的流程(如JVM)可以产生超过你自己管理的更好性能和更少错误。 3. JVM分为三部分 3.1.JVM规范 首先,JVM是一个软件规范。 以某种通告或宣告方式表达其要求,JVM规范强调其实现细节不在其规范中具体定义,以便在其实现中实现***的创造性(如下通告要求): "要正确实现Java虚拟机,您只需要能够读取类文件格式并正确执行其中指定的操作。" 还有这样的例子,如J.S. 巴赫(Bach)曾经类似的描述过音乐创作: "你所要做的就是在合适的时间触碰那正确的调调(就是音乐家或唱歌所说那个key,键)。" 因此,JVM所要做的就是正确运行Java程序。 听起来很简单,甚至可能从外面看起来也很简单,但这是一项艰巨的任务,特别是考虑到Java语言的强大功能和灵活性。 注意,JVM就是个虚拟的机器,可进一步描述如下: (编辑:大同站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


