zoukankan      html  css  js  c++  java
  • JVM 介绍

    JVM 介绍:

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

    Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

    java 源代码编译过程

    java 基本数据类型

    byte://1字节有符号整数的补码
    short://2字节有符号整数的补码
    int://4字节有符号整数的补码
    long://8字节有符号整数的补码
    float://4字节IEEE754单精度浮点数
    double://8字节IEEE754双精度浮点数
    char://2字节无符号Unicode字符
    boolean:boolean数据类型表示一位的信息

    其它数据类型

    object//对一个Javaobject(对象)的4字节引用
    returnAddress//4字节,用于jsr/ret/jsr-w/ret-w指令

    JVM虚拟机内存结构

    JVM虚拟机将其内存分为程序计数器、虚拟机栈、本地方法栈、java堆、方法区。

    程序计数器:是一块私有的内存空间,比较小。主要记录下一条要运行的命令。

    虚拟机栈:也是线程私有的内存空间,和java线程同一时间创建,主要用来保存局部变量、部分结果、并参与方法的调用和返回。(虚拟机栈运行时使用一种叫“栈帧”的数据结构保存上下文数据。)

    本地方法栈:虚拟机栈用于管理java函数的调用,本地方法栈用于管理本地方法的调用(用C实现的方法)

    java堆:所有的对象、数组都是在堆中分配空间。

    堆分为:新生代、老年代。

    新生代:存放刚刚产生的对象和年轻对象。新生代分为:e'den(对象刚创建时)、survivor space()、1(至少被GC一次)。

    方法区(永久区):被JVM中的所有线程共享(独立于java堆的内存空间)。主要保存的是类的元数据(类的类型信息、常量池、域信息、方法信息:存放常量和类的定义信息)。GC回收时,只回收永久区中常量池的回收(未被引用的常量),再就是对类元数据的回收。

    JVM百度百科地址:https://baike.baidu.com/item/JVM/2902369?fr=aladdin

  • 相关阅读:
    webrtc系列之-像老鼠一样打洞
    Ubuntu记录用户IP访问操作信息工具
    OPENVIDU实现同一用户同时发布多个流媒体
    如何使用Nginx-rtmp搭建简易的HLS直播系统
    python实现数据库主从状态监控
    简单分析实现运维利器---批量操作bashshell
    《我与Windows Server 2008R2那点事儿》之域控账户故障事件
    常用动态路由协议之IS-IS
    在云服务器上搭建Python开发环境
    基于Python3接口自动化测试开发相关常用方法
  • 原文地址:https://www.cnblogs.com/ming-blogs/p/10958621.html
Copyright © 2011-2022 走看看