java-JVM

JVM第一章
1.原码、反码、补码怎么表示?

二进制的第一位为符号位,0为正数,1为负数
原码:正数的原码符号位为0,负数的原码符号位为1
5 的原码 为 00000000 00000000 00000000 00000101
-5 的原码为 10000000 00000000 00000000 00000101
反码:符号位不变、其他位取反
5的反码 是:01111111 11111111 11111111 11111010
-5 的反码是 11111111 11111111 11111111 11111010
补码:正数的补码是原码本身,负数的补码是反码+1
5的补码 :01111111 11111111 11111111 11111010
-5 的补码:11111111 11111111 11111111 11111011

2.计算机中用什么来表示整数?

补码

3.jvm中使用补码表示整数的好处是什么?

1:统一了整数0 的表示方式,0是正数时是二进制的32个0,负数用补码表示也是32个0
2:方便加减运算,可以直接用补码做加减法

4.基本数据类型的长度?

byte 1字节 8bit
short、char 2字节 16bit
int、float 4字节 32bit
long、double 8字节 64bit
boolean 如果表示变量用4字节、如果是数组,那么每个元素就是1字节

JVM第二章
5.JVM内包括那几部分?

类加载子系统、java栈、方法区Java堆、本地方法栈、PC寄存器、执行引擎、垃圾回收系统、直接内存

6.本地方法栈和java栈的区别?

本地方法栈用于本地函数的调用,java栈用于java函数的调用

7.PC寄存器的作用是什么?

PC寄存器是每个线程的私有空间,jvm为每个线程创建一个PC寄存器,在任意时刻,一个线程总是在执行一个方法,如果当前线程执行的线程不是本地方法,PC寄存器会存储它的指令,如果是本地方法,则存储undefined。

8.java堆的结构?

Java堆分为新生代和老年代,其中新生代放新生对象和年龄不大的对象,老年代则放年老的对象。新生代有可能分为eden区、S0区、S1区,也是From区和To区,是大小相等可以互换角色的内存空间。对象首先分配在Eden区,在一次新生代回收后,如果对象存活,则进入S0或者S1区,之后,没经过一次新生代回收,对象如果存活,年龄就会加1.当对象的年龄达到一定条件后,就会被认为是老年对象,从而进入老年代。

9.操作数栈的作用?

保存计算过程的中间结果

10.方法区(永久区)的作用?

保存类的信息、字段、方法、常量池等,在java8中已经被移出,用元数据区替代,是堆外的直接内存,如果没有配置的话,默认会用完机器的全部内存。

你可能感兴趣的:(java-JVM)