• Java程序运行时内存划分


    1.Java程序跨平台运行的原因

    主要原因是:各种平台的JVM和字节码文件

    Java源程序--具体平台的机器代码文件---被编译器翻译成平台无关的Class文件,又用特定JVM运行字节码文件,JVM在运行的过程中

    将字节码指令转换为具体平台的机器指令。JVM运行在用户态,操作系统将JVM看作是一个特殊的软件,JVM启动的时候,OS给其划分

    一定的内存供其运行字节码文件。存在基于JVM的其他编程语言的原因:对应特定语言的编译器可以将源码翻译成字节码文件,这个字节码可以被JVM识别并执行。

    注意:执行引擎其实就是一系列的方法组成的流程---对应的就是线程,JVM执行字节码指令是基于栈的,所有操作数入栈。

    Java的线程是用户态线程,线程状态改变维护都在用户态。

    2.Java程序运行时内存区域划分

    进行内存区域划分是由谁完成的---JVM完成,它将从操作系统获得内存,按照数据的存储结构模拟实际机器对内存进行划分。

    将内存划分为以下几个区域:

      PC:字节码解释器通过PC的值找到下条要执行的字节码指令---线程私有

      虚拟机栈:存储Java方法的局部变量和参数,属于线程私有

      本地方法栈:存储JVM使用到的本地方法相关的局部变量和参数,线程私有

      堆:存储new产生的对象以及数组,是JVM垃圾回收的主要区域,线程共享

      方法区:存储类信息、常量、静态变量等,线程共享

      运行时常量池:存放在执行过程中生成的常量,属于方法区的一部分

  • 相关阅读:
    mysql 数据库检查与修复的办法
    SECPATH透明模式下VLAN透传配置实例
    腾讯QQ所有的服务器
    AutoRuns 9.13 汉化版
    IP地址在数据库中的存储解决方案
    DNS智能解析 for windows 2003
    Windows Media Player ActiveX 控件参数
    删除nvidia右键菜单
    通过js控制cookies
    正确使用|(按位或)和||(逻辑或)
  • 原文地址:https://www.cnblogs.com/sun1993/p/7814786.html
Copyright © 2020-2023  润新知