189 8069 5689

怎么理解Java虚拟机

本篇内容介绍了“怎么理解Java虚拟机”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

成都创新互联专注于中大型企业的成都网站设计、网站制作和网站改版、网站营销服务,追求商业策划与数据分析、创意艺术与技术开发的融合,累计客户近1000家,服务满意度达97%。帮助广大客户顺利对接上互联网浪潮,准确优选出符合自己需要的互联网运用,我们将一直专注品牌网站建设和互联网程序开发,在前进的路上,与客户一起成长!

  1. Jvm内存结构 怎么理解Java虚拟机


>线程隔离区域说明:

1.1、程序计数器

  • 线程私有

  • 是一块内存空间

  • 唯一的一个在Java虚拟机规范中没有规定任何OOM情况的区域(不会OOM?)

1.2、Java虚拟机栈

  • 线程私有

  • 声明周期与线程相同

  • 在Java虚拟机规范中规定两种异常状况: 1、线程的栈深度大于虚拟机所允许,抛出StackOverflowError异常; 2、如果虚拟机栈可以动态扩展,当扩展到无法申请足够的内存,抛出OOM PS:每一个方法在执行的同时都会创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态链接、方法出口等信息,每一个方法从调用到完成,就对应着一个栈帧从入栈到出栈的过程

1.3、本地方法栈

  • 线程私有

  • 声明周期与线程相同

  • 在Java虚拟机规范中规定两种异常状况: 1、线程的栈深度大于虚拟机所允许,抛出StackOverflowError异常; 2、如果虚拟机栈可以动态扩展,当扩展到无法申请足够的内存,抛出OOM

PS:可以看出本地方法栈和Java虚拟机栈的特征基本一致。 区别是:Java虚拟机栈为执行Java方法服务,而本地方法栈为Native方法服务。

> 线程共享区域说明:

1.4、Java堆

  • 线程共享

  • 存放对象实例

  • 虚拟机内存中最大的一块

  • 逻辑连续,物理不需要连续

  • 存在OOM

  • 是Java垃圾回收主要的区域

1.5、方法区

  • 线程共享

  • 存储被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码

  • ≈永久代(Permanent Generation)本质不等价

  • 不需要连续内存

  • 存在垃圾回收,但是回收区域仅限于常量池和类型的卸载

  • 存在OOM

“怎么理解Java虚拟机”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


分享标题:怎么理解Java虚拟机
网页网址:http://cdxtjz.cn/article/ihcpdc.html

其他资讯