`
raidyue
  • 浏览: 19043 次
  • 性别: Icon_minigender_1
  • 来自: 湖南常德
社区版块
存档分类
最新评论

JVM内存结构浅谈

阅读更多

Java程序的运行过程:

1, 编译器将源代码编译成.class文件(对于虚拟机来说并不关心class文件的来源是什么,只要他符合java class文件的规则,就可以在jvm中运行,使用其它语言将其编译成class文件也是可以在jvm中运行的)

2,
ClassLoad(类加载器)将.class文件加载到内存

3,   Execution Engine(执行引擎)解释命令,提交到操作系统

4,  若是需要调用其它语言的函数则由Native Method Interface(本地方法接口)完成,首先会在native method stack(本地方法栈)中登记函数,执行引擎执行是加载native libraries(本地方法库)



 

ClassLoad(类装载器):加载类文件到内存,并且只加载符合格式的class文件,并不负责是否能够运行

 

 

Runtime Data Area

Programme Counter Resister:每当启动一个线程时,都会为这个新线程创建一个自己的  pc寄存器。

 

Java Stack:Java栈是线程私有的。每当启动一个线程时,.Java虚拟机都会为他分配一个Java栈。以帧为单位进行压栈或者出栈。当线程调用Java方法时,虚拟机则压入一个新的栈政到该线程的Java栈中。当方法返回时,这个栈帧被从Java栈中弹出并被抛弃。其存储局部变量、操作栈、动态链接、方法出口。

 

Native Method Stack:本地方法栈则是为虚拟机使用的Native方法服务。某个虚拟机实现的本地方法接口是使用c连接模型的话,那么它的本地方法栈就是c栈

 

Heap:堆是Java虚拟机所管理的内存中最大的一块,Java堆是被所有的线程共享的一块内存区域,在虚拟机启动时创建。所有的对象实例都要以及数组都要在堆上分配,同时堆也是Java虚拟机主要管理的区域

 

Method Area:类加载器加载class文件到内存时,虚拟机会提取其中的类型信息,并将这些信息存储到方法区。方法区用于存储已被虚拟机加载的类信息、常量静态变量等数据。由所有的线程贡献方法区。

 

Execution Engine:执行引擎也叫解释器,负责解释命令,提交操作系统执行。

  • 大小: 23.6 KB
  • 大小: 38.6 KB
分享到:
评论

相关推荐

    浅谈JAVA虚拟机JVM及工作原理

    "浅谈JAVA虚拟机JVM及工作原理" Java虚拟机(JVM)是Java语言的 runtime 环境,它提供了一个平台独立的环境,使得Java程序可以跨平台运行。JVM 的主要组件包括虚拟机栈、堆、方法区、程序计数器、本地方法栈等。 1...

    java培训教程-浅谈java虚拟机.pdf

    JVM的结构可以分为五个主要部分: 1. **指令集**:这是JVM的汇编语言,包含约248种字节码指令,用于执行基础的计算和控制流程操作,如加载和存储数据、执行算术运算、跳转等。 2. **寄存器**:JVM有一组虚拟寄存器...

    浅谈Java的虚拟机结构以及虚拟机内存的优化

    了解JVM的内存结构有助于我们进行性能优化。例如,通过减少对象的创建,可以降低垃圾回收的压力,提高程序效率。理解栈的工作原理能帮助我们避免栈溢出,比如通过控制递归深度和循环次数。此外,了解垃圾回收机制让...

    浅谈JVM核心之JVM运行和类加载

    - **加载**:从磁盘或网络加载class文件到内存,创建类的运行时数据结构,并在堆中生成一个Class对象作为访问方法区的入口。 - **链接**:验证类文件的格式正确性,确保安全;准备阶段为静态变量分配内存并设置初始...

    浅谈java内存管理与内存溢出异常

    然而,尽管如此,理解JVM的内存结构对于识别和解决内存问题至关重要。 JVM运行时数据区是理解Java内存管理的基础。根据JVM规范,它主要分为以下几个区域: 1. **程序计数器(PC Register)**:每个线程都有自己的...

    java gc调优

    首先,理解JVM内存结构是GC调优的基础。JVM内存主要分为堆内存(Heap)和非堆内存(Non-Heap),其中堆内存又细分为新生代(Young Generation)、老年代(Tenured Generation或Old Generation)和永久代(Permanent ...

    Java反射技术浅谈.pdf

    Java反射技术浅谈 Java作为一种广泛使用的编程语言,它的设计目标之一是提供一种灵活的编程方式,使程序能够在运行时识别和操作对象。为了实现这一目标,Java语言引入了反射机制,使得开发者能够动态地探索和操作...

    浅谈计算机应用软件开发中编程语言的选择研究中英文对照.pdf

    浅谈计算机应用软件开发中编程语言的选择研究 随着信息技术的飞速发展,计算机应用软件已经深入到我们生活的各个角落,成为现代社会不可或缺的一部分。对于软件开发企业来说,选择合适的编程语言至关重要,因为它...

    浅谈IT系统运维检查的工作内容.docx

    2. **JVM内存管理**:监控JVM内存使用情况,避免内存泄露。 3. **JDBC连接池管理**:合理配置连接池参数,提高数据库访问效率。 4. **日志检查**:定期检查中间件日志文件,及时发现异常情况。 以上内容全面覆盖了...

    浅谈计算机软件开发的JAVA编程语言.zip

    Java使用垃圾回收机制自动管理内存,减少了程序员处理内存泄漏的风险。此外,Java采用类作为基本的构造单元,支持多态性和封装,使得代码更加模块化和易于维护。 Java的跨平台能力得益于Java虚拟机(JVM)。JVM允许...

    浅谈计算机软件开发中JAVA编程语言的应用.pdf

    对于程序员而言,Java的这些特性能够显著提高开发效率,并且其结构简单还体现在了内存管理和错误处理机制上。Java能够自动进行内存管理,比如垃圾回收,从而减轻了程序员在内存管理方面的负担。同时,Java还提供了...

    浅谈Android系统的基本体系结构与内存管理优化

    Android运行环境一览 Android基于linux内核,...Dalvik VM采用寄存器架构,而不是JVM的栈架构,更适于移动设备。java源代码经过编译成为.class字节码文件,然后由谷歌提供的 dx工具将其转化为Dalvik可识别的.dex文件

    浅谈Java 类中各成分加载顺序和内存中的存放位置

    1. **加载阶段**:当类首次被使用时,JVM会从硬盘上的`.class`文件读取类的二进制数据并加载到内存中。此时,加载的内容包括类的结构信息,如类名、方法定义等,但不执行任何代码。静态成员变量、静态方法、静态初始...

    关于javal垃圾回收机制的一些文档

    浅谈Java垃圾回收机制.doc文档可能会涵盖以下几个关键点: 1. **对象生命周期**:当一个对象被创建后,它会在内存中占据一定的空间。如果对象不再被任何引用指向,那么这个对象就成为垃圾。 2. **垃圾收集器**:...

    浅谈为什么Java里面String类是不可变的

    例如,字符串的常量池节省内存,缓存 Hash 类以字符串做 key 数据结构的 hashCode,从而提高访问性能等。由于字符串是编程语言里面最广泛使用的数据结构,所以针对字符串的不可变性带来的优势,可以放大到整个运行的...

    浅谈JAVA设计模式之享元模式

    在Java中,String对象是不可变的,当创建一个新的字符串时,JVM会首先检查字符串池中是否已经存在相同值的字符串对象。如果存在,就返回这个对象的引用;如果不存在,则在字符串池中创建一个新的String对象,并返回...

Global site tag (gtag.js) - Google Analytics