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 区。
其中 Eden 和 Survivor 区的比例默认是 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种基本类型,请问byte、int、long、char、float、double、boolean各占多少个字节?
正确答案: 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被执行的几率更大而已