JVM_1
这里面加了很多我自己的看法,有啥错误的阔以给我留言一手,多谢您! JAVA虚拟机在执行java程序的时候会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自不同的用途,以及创建和销毁时间. java虚拟机所管理的内存包括以下几个运行时数据区域 Method Area方法区(线程共享) VM Stack虚拟机栈(线程私有) Native Method Stack本地方法栈(线程私有) Heap堆(线程共享) Program Counter Register程序计数器(线程私有) 注意:这几个区域都是JVM管理的运行时数据区,要记住运行时数据区这几个字. 程序计数器(线程私有) 它是一块较小的内存空间, 可以看作是当前线程所执行的字节码的行号指示器,其中的值的数据类型为returnAddress类型 字节码解释器工作的时候就是通过改变这个计数器的值来选取下一条需要执行的字节码指令的,分支,循环,跳转,异常处理,线程恢复等都需要依赖这个计数器来完成. 为什么说它是线程私有的呢? 因为虚拟机的多线程是通过线程轮流切换并分配处理器时间的方式来实现的,在任何一个确定的时刻,一个处理器都 只会 执行一条线程中的指令,因此,为了保证线程切换后能恢复到正确的执行位置,每条线程都会有一个独立的程序计数器,各条线程之间的计数器互不影响,独立存储! 如果当前线程执行的时java方法