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
被执行的几率更大而已