jvm基本结构
解释:
其他文章
- 方法区:一般也叫永久区,在jdk8之前存在的,jdk8以后把方法区放到了元空间中,也就是物理内存中,详情查看这篇文章。作用是保存静态变量、类的加载信息、字符串常量等.因为这部分空间垃圾收集器很难回收(不是不能回收),所以就被叫为永久区.
- 指令计数器:总是指向下一条需要执行的内存地址.有了它,计算机就能知道下一次需要怎么做.
- 堆内存:堆内存属于公共的内存空间,具体又可分为新生代、老年代、幸存区等,下面是堆内存示意图:
- 栈内存:栈内存属于每个线程独占的空间,内存占据不太多,占据太多会严重消耗服务器性能.一般用于保存线程独占的内容,可以使用volatile使得线程不从自己的栈内存中取值,而是从共享栈中取值,有助于保持线程数据的同步性.由于加了栈内存,可以显著的提高程序的运行效率,而从栈内存中取值,需要多花费一点时间,所以不是都是用volatile好,依据情况而定.
- 本地方法栈:调用操作系统的本地实现,一般具有native关键词
- 垃圾收集器:一般叫做GC,会定期的扫描一些已被废弃的对象进行回收内存空间,因此一个好的收集算法格外重要