2019年10月28日_java_2

考点2 JVM参数

假如某个JAVA进程的JVM参数配置如下:
-Xms1G
-Xmx2G
-Xmn500M
-XX:MaxPermSize=64M
-XX:+UseConcMarkSweepGC
-XX:SurvivorRatio=3
请问eden区最终分配的大小是多少?

解析

-Xmx2G:设置JVM最大可用内存为2G
-Xms1G:设置JVM促使内存为1G。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmn500M:设置年轻代大小为500M

整个JVM内存大小=年轻代大小+年老代大小 + 持久代大小。

新生代中又会划分为 Eden 区,from Survivor区、to Survivor 区。

其中 EdenSurvivor 区的比例默认是 8:1:1,当然也支持参数调整
-XX:SurvivorRatio=3的话就是3:1:1

故该题为500*(3/5)=300M.

考点3 多线程 多进程

关于多线程和多进程,下面描述正确的是():

  • A 多进程里,子进程可获得父进程的所有堆和栈的数据;而线程会与同进程的其他线程共享数据,拥有自己的栈空间。
  • B 线程因为有自己的独立栈空间且共享数据,所有执行的开销相对较大,同时不利于资源管理和保护。
  • C 线程的通信速度更快,切换更快,因为他们在同一地址空间内。
  • D 一个线程可以属于多个进程。
正确答案: AC

解析

1、一个线程只能属于一个进程 ,而一个进程可以有多个线程,但至少有一个线程(通常说的主线程)。
2、资源分配给进程 ,同一进程的所有线程共享该进程的所有资源。
3、线程在执行过程中,需要协作同步。不同进程的线程间要利用消息通信的办法实现同步。
5、线程是指进程内的一个执行单元,也是进程内的可调度实体。
6、同一个进程下的多个线程之间可以共享数据,因此 开销较小

考点4 基本类型占字节数

java有8种基本类型,请问byteintlongcharfloatdoubleboolean各占多少个字节?

正确答案: 1 4 8 2 4 8 1

解析

基本数据类型 占用空间
byte 占一个字节
short 占两个字节
int 占四个字节
long 占八个字节
float 占四个字节
double 占八个字节
char 占两个字节
boolean 占一个字节

考点5 运算符优先级

表达式(short)10/10.2*2运算后结果是什么类型?

  • A short
  • B int
  • C double
  • D float
正确答案: C

解析

  • 强制类型转换运算符的优先级比算数运算符要高,所以先进行强制类型转换,也就是(short)只对最近的10有转换效果。
  • 浮点数默认数据类型为double

考点6 导致线程中断或停止运行的情况

下列哪些情况下会导致线程中断或停止运行( )

  • A InterruptedException异常被捕获
  • B 线程调用了wait方法
  • C 当前线程创建了一个新的线程
  • D 高优先级线程进入就绪状态

正确答案: AB

解析

A选项正确,Java中一般通过interrupt方法中断线程
B选项正确,线程使用了wait方法,会强行打断当前操作,进入阻塞(暂停)状态,然后需要notify方法或notifyAll方法才能进入就绪状态
C选项错误,新创建的线程不会抢占时间片,只有等当前线程把时间片用完,其他线程才有资格拿到时间片去执行。
D选项错误,调度算法未必是剥夺式的,而准备就绪但是还没有获得CPU,它的权限更高只能说明它获得CPU被执行的几率更大而已