JVM

Posted wh1520577322

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JVM相关的知识,希望对你有一定的参考价值。

在运行时数据区 哪些是线程和线程私有的

01 线程共享

方法区

02 线程私有

虚拟机栈 本地方法栈  程序计数器

下面我来具体的介绍一下这几个名词

 

 程序计数器 :

 

  • 当前线程执行字节码文件的行号指示器能够在线程切换后找到自己正确的位置
  • 唯一一个不会导致内存溢出 outofmeorm

 

虚拟机栈:

 

  • 基本数据类型和对象的引用变量都存在此区域

 

  • 先进后出,后进先出

 

本地方法栈

 

  • 主要服务的是native修饰的方法 在HotSport中虚拟机栈和本地方法栈合为一体

 

 堆                                    

 

  • 所有对象的实例和数组开辟的空间都在此区域保存

 

  • 所有线程共享

 

  • GC主要回收对象的区域

 

方法区: (静态区)

 

  • 所有线程共享;

 

  • 方法(包含构造),接口,定义在此区域

 

  • 所有方法的信息;

 

  • 静态常量类信息+方法信息+常量池

 

 

可能出现异常  在这里我介绍两个异常

  1. StackOverFlowerror  线程请求的栈的深度大于虚拟机栈规定的深度
  • OutofMemoryError   虚拟机在扩展栈时,无法申请到足够的内存空间

 

以上是关于JVM的主要内容,如果未能解决你的问题,请参考以下文章

jvm基础--JVM参数配置

jvm基础--JVM内存模型

jvm基础--JVM内存模型

JVM基础:深入学习JVM堆与JVM栈(转)

JVM堆与JVM栈

JVM内存管理和JVM垃圾回收机制