文章目录
- JVM内存模型
-
- 1. 方法区(Method Area)
-
- 运行时常量池(Runtime Constant Pool)
- 2. 堆(Heap)
- 3. 栈(Stack)
- 4. 本地方法栈(Native Method Stack)
- 5. 程序计数器(Program Counter Register)
- 6. 直接内存(Direct Memory)
- JVM内存溢出的情况
Java的口号是:
“Write once,run anywhere”
,即一次编写,到处运行。
为什么可以做到这样呢?其实就是依赖于JVM。
在不同的操作系统上,只要安装了对应的虚拟机,那么同样的一份代码,就可以随意移植。
当编写完Java
代码时,即产生 .java
文件,会通过Java编译器
编译为.class
文件,然后通过Class Loader
把类信息加载到JVM
中,最后JVM
再去调用操作系统。
这样,只要JVM
正确执行.class
文件,就可以实现跨平台了。
JVM内存模型
Java Virtual Machine (JVM)
和计算机一样有操作栈和程序计数器
,运行的方式也基本一致。
JVM
同样以线程
为最小单位
运行,其中方法区与堆
属于线程共享区
,而栈与程序计数器
属于线程