1
、什么是进程?什么是线程?
进程
是操作系统分配资源的最小单元
线程
是操作系统调度的最小单元。
一个程序至少有一个进程
,
一个进程至少有一个线程。
2
、
JVM
、
JRE
、
JDK
的关系?
JVM
:(
Java Virtual Machine
),
Java
虚拟机。它能识别
.class
后缀的文件,并且能够解析它的指令,最终调用操
作系统上的函数,完成我们想要的操作。
3
、
JVM
中可以运行多种语言吗?
图灵学院
JVM
只识别字节码,所以
JVM
其实跟语言是解耦的,也就是没有直接关联。
像
Scala
、
Groovy
、
Kotlin
等等语言都可以在JVM上运行
4
、
JVM
有哪些内存区域?
虚拟机栈
:在
JVM
运行过程中存储当前线程运行方法所需的数据,指令、返回地址。
本地方法栈
:本地方法栈是和虚拟机栈非常相似的一个区域,它服务的对象是
native
方法。
程序计数器
:主要用来记录各个线程执行的字节码的地址。
方法区
:
JDK1.7
及之前
“
永久代
”
,
JDK1.8
及以后
“
元空间
”
,存放类的信息、常量池、方法数据、方法代码
堆
:堆是
JVM
上最大的内存区域,我们申请的几乎所有的对象,都是在堆中存储。
5
、堆空间大小怎么配置?各区域怎么划?
6
、
JVM
中哪些内存区域会发生内存溢出
(OOM)
?
栈溢出
堆溢出