美文网首页
细读JVM(01) ---------- Java内存区域

细读JVM(01) ---------- Java内存区域

作者: 快乐的小码农呀 | 来源:发表于2019-12-07 20:02 被阅读0次

      Java虚拟机在运行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途以及创建和销毁的时间,有的区域随着Java虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而创建和销毁。
                            --摘自《深入理解Java虚拟机》

    内存区域图示

    程序计数器(program counter)

      学过线程的同学应该了解,Java的多线程是通过CPU不断在线程之间切换来实现的,那么我们不禁要问:当线程的指令并没有执行完毕,却因为时间片耗尽而失去了CPU使用权,又该如何从挂起的地方继续执行呢?关于这个问题,不得不提到一个概念,就是程序计数器(program counter)。
      JVM中通过程序计数器来记录当前字节码的执行位置,使已经挂起的线程重新获得CPU使用权后,依旧能够继续往下执行。讲解完了用途之后,我们总结一下程序计数器的几个特点:

    • 线程隔离性:每个线程都有一个自己的程序计数器,彼此隔离,互不影响。

    • 执行Native方法时,程序计数器值为空,原因是native方法是通过jni调用的C/C++库,与字节码无关。

    • 生命周期随着线程,线程启动而产生,线程结束而消亡。

    • 由于存储的是字节码地址,在创建时JVM就会为其分配一个足够大的内存,所以没有规定任何OutOfMemoryError。


      源码与字节码

    相关文章

      网友评论

          本文标题:细读JVM(01) ---------- Java内存区域

          本文链接:https://www.haomeiwen.com/subject/cfzugctx.html