JVM知识检测

首先我们了解一下:JDK,JRE,JVM、IDE

  • IDE = Integrated Development Environment = 集成开发环境
  • JDK = Java development kit = 开发工具包
    • JDK包含了JRE,JRE包含了JVM(是JRE的一部分)
    • JDK的工具也是Java程序,也需要JRE才能运行。为了保持JDK的独立性和完整性,在JDK的安装过程中,JRE也是 安装的一部分。所以,在JDK的安装目录下有一个名为jre的目录,用于存放JRE文件。
  • JRE = Java runtime environment = 运行环境,也就是Java平台。所有的Java 程序都要在JRE下才能运行。
  • JVM = Java virtual machine = 虚拟机(用于执行bytecodes字节码的虚拟计算机)

    1. Java虚拟机是一种用于计算设备的规范,它是一个虚构出来的计算机,是利用软件方法在实际的计算机上仿真模拟各种计算机功能。
    2. JVM是java的核心和基础,在java编译器和OS平台之间的虚拟处理器。
    3. JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。【Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。这就是Java的能够“一次编译,到处运行”的原因。】
    4. JVM实例对应了一个独立运行的java程序它是进程级别
    5. Java有自己完善的硬件架构,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。

这里写图片描述

由图可知
大多数 JVM 将内存区域划分为
1. Method Area(Non-Heap)(方法区)
2. Heap(堆)
3. Program Counter Register(程序计数器)
4. VM Stack(虚拟机栈,也有翻译成JAVA 方法栈的)
5. Native Method Stack ( 本地方法栈 )
其中Method Area 和 Heap 是线程共享的 ,VM Stack,Native Method Stack 和Program Counter Register 是非线程共享的。
这里写图片描述

知识点检验

1.下面有关JVM内存,说法错误的是?

A. 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B. 虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔 离的
C. 方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的
D. 原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的

2.对于JVM内存配置参数:-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3,其最小内存值和Survivor区总大小分别是()
A. 5120m,1024m
B. 5120m,2048m
C.10240m,1024m
D.10240m,2048m

这里写图片描述

3.根据下面的程序代码,哪些选项的值返回true?

public class Square {  
    long width;  
    public Square(long l) {   
        width = l;  
    }  
    public static void main(String arg[]) {   
        Square a, b, c;  
        a = new Square(42L);   
        b = new Square(42L);   
        c = b;   
        long s = 42L;  
    } 
}

A. a == b、
B. s == a
C.b == c
D.a.equals(s)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值