`
Wind_ZhongGang
  • 浏览: 260368 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

JVM浅析

    博客分类:
  • Java
阅读更多

  JVM,全称Java Virtual Machine,即Java虚拟机。我们以Java作为编程语言所编写的应用程序都是运行在这上面的。JVM对程序的执行主要分为两个步骤,第一步是编译,即将.java的源文件编译成为.class的字节码文件,第二步是解释,JVM对字节码文件进行解释执行。

   更进一步的研究,我们会发现,JVM整个大系统又分为两个子系统,第一个是ClassLoader,即类加载器,功能则是将我们编写的类加载到JVM当中来。我们可以继承ClassLoader这个类来实现我们自己的类加载器,至于具体如何让JVM使用我们的自定义ClassLoader还有待研究;第二个是Execution Engine,即执行引擎,负责对编译后的字节码文件进行解释执行。而Execution Engine又分为两部份,第一部份是Runtime data area,即运行时数据区域,这就相当于JVM中的内存,而第二部份则是Native interface,即本地化接口,主要用于执行其他非java编程语言编写的程序。这里面的重点就是Runtime data area。RDA又分为五个部分,分别是Method area 方法区域,Java stack Java栈,Heap 堆,Program counter 程序计数器,Native method stack 本地方法栈。 堆又分为三个部份,第一部份是Young年轻代,第二部份是Tenured年老代,第三部份是Perm持久代。年轻代又分为Eden,Survivor I,Survivor II三个部份。现在来看看JVM的构图吧。

   JVM Structure

 

 

           现在再来详细了解一下Runtime data area中的各个组成部份。

 

           1.Java stack

           Java栈是一个内存块,一个数据集,遵循先进后出的原则。如当A方法被调用时,A被压入栈,而A方法中又调用了B方法,B方法被压入栈,执行完毕时,B方法先出栈,然后才是A方法出栈。栈中存放的数据主要是本地变量,即输入输出参数,形式参数。栈中的数据被应用程序的每一个线程所拥有,当线程结束,那么栈中的数据也就消失了。所以不存在垃圾回收的问题。

           2.Heap

           对象的实例就存放在堆中。因为堆中的数据是被应用程序的所有线程所共享的,所以可能会引发同步问题,这是需要我们考虑的,而且Java中的GC就是针对堆中的数据进行垃圾回收处理的。来看看堆的结构吧。

Heap

  • 大小: 50.8 KB
  • 大小: 39.1 KB
分享到:
评论

相关推荐

    JVM浅析.pptx

    对Java中JVM和JMM中技术根据手绘图来详细的展示。加深理解,让自己一次性解决JVM,吊打面试官是我们的目的。

    浅析JVM

    关于JVM的垃圾回收以及内存模型

    浅析JVM垃圾回收的过程

    主要介绍了JVM垃圾回收的过程,帮助大家更好的理解和学习Java中的垃圾回收机制,感兴趣的朋友可以了解下

    浅析JVM内存结构和6大区域

    那JVM的内存结构到底是如何呢?JVM做为一个运行在操作系统上,但又独立于os运行的平台,它的内存至少应该包括象寄存器、堆栈等区域。  JVM在运行时将数据划分为了6个区域来存储,而不仅仅是大家熟知的Heap区域,...

    浅析打开eclipse出现Incompatible JVM的解决方法

    本篇文章是对打开eclipse出现Incompatible JVM的解决方法进行了详细的分析介绍,需要的朋友参考下

    浅析JVM逃逸的原理及分析

    在本篇文章里我们给大家分享了JVM逃逸的原理及分析的相关知识点内容,需要的读者们可以学习下。

    JVM进阶教程之字段访问优化浅析

    主要给大家介绍了关于JVM进阶教程之字段访问优化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    Java内存分配全面浅析

    Machine,Java虚拟机)上,可以把JVM理解成Java程序和操作系统之间的桥梁,JVM实现了Java的平台无关性,由此可见JVM的重要性。所以在学习Java内存分配原理的时候一定要牢记这一切都是在JVM中进行的,JVM是内存分配...

    Notes:This is a learning note | Java基础,JVM,源码,大数据,面经

    Notes 我的笔记: 知识不总结,就会被大脑当垃圾清理 :horse:求知之路必然不会一帆风顺,唯有以勤为刃,以习惯为马,劈懒斩愚,跨越舒适区,方能知众人所...浅析Web容器 计算机网络 UDP&TCP DB MySQL索引背后的数据结构

    Java内存模型JMM浅析

    JavaMemoryModel简称JMM,是一系列的Java虚拟机平台对开发者提供的多线程环境下的内存可见性、是否可以重排序等问题的无关具体平台的...典型的就是i++的问题了,两个线程同时对共享的堆内存执行++操作,而++操作在JVM

    Java基础知识点 - 内容比较全面

    1.5 JVM ClassLoader机制 1.6 Java中的synchronized使用 1.7 Java中的反射机制 1.8 Java中Heap与Stack的区别 1.9 Java中String和StringBuffer的区别 1.10 Java中Comparable和Comparator实现对象比较 1.11 Java...

    Kotlin中的Checked Exception机制浅析

    许多学习Kotlin的开发者之前都是学习过Java的,并且本身Kotlin就是一款基于JVM语言,因此不可避免地需要经常和Java进行比较。 Kotlin的诸多特性,在熟悉Java的开发者看来,有些人很喜欢,有些人不喜欢。但即使是不...

    浅析Java中的GC垃圾回收器的意义及与GC的交互

    主要介绍了Java中的GC垃圾回收器的意义及与其的交互,GC是Java虚拟机JVM的一项重要特性,需要的朋友可以参考下

    JSTL详细标签库介绍

    target=_blank>如何在程序异常或正常退出JVM时执行特定代码</A> <LI><A title=构建更好的异常处理框架 href="http://www.jspcn.net/htmlnews/11453827062501758.html" target=_blank>构建更好的异常处理框架...

Global site tag (gtag.js) - Google Analytics