设为首页 加入收藏

TOP

Java虚拟机运行时数据区域
2015-07-24 05:41:28 来源: 作者: 【 】 浏览:5
Tags:Java 虚拟 行时 数据 区域

Java虚拟机在执行Java程序的过程中会将其管理的内存划分为若干个不同的数据区域,这些区域有各自的用途,及创建和销毁的时间,有些区域随虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束来建立和销毁。Java虚拟机所管理的内存包括以下几个运行时数据区域,如图(图片引自网络):

\

1.1 程序计数器(Program Counter Register)

程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的信号指示器。字节码解释器就是通过改变该计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需依赖计数器来完成。

每一个JVM线程都有独立的程序计数器,各线程间的计数器互不影响,独立存储,确保线程切换后能够恢复到正确的执行位置。

在任意时刻,一条JVM线程只会执行一个方法的代码。该方法称为该线程的当前方法(Current Method),如果该方法是Java方法,那计数器保存JVM正在执行的字节码指令的地址;如果该方法是Native,那PC寄存器的值为空(Undefined)。<??http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+tMvE2rTmx/jT8srHzqjSu9K7uPbU2kphdmHQ6cTiu/q55re21tDDu9PQuea2qMjOus5PdXRPZk1lbW9yeUVycm9yx+m/9rXEx/jT8qGjPC9wPgo8aDY+MS4yIEphdmHQ6cTiu/rVu6OoSmF2YSBWaXJ0dWFsIE1hY2hpbmUgU3RhY2ujqTwvaDY+CjxwPiAgICBKYXZh0OnE4rv61bvT67PM0PK8xsr9xvfSu9H5o6zSssrHz9+zzMu909C1xKOsxuTJ+sP81tzG2tPrz9+zzM/gzayho9DpxOK7+tW7w+jK9rXEysdKYXZht723qNa00NC1xMTatObEo9DNo7rDv7j2t723qLG71rTQ0LXEyrG68ra8u+HNrMqxtLS9qNK7uPbVu9aho6hTdGFjawogRnJhbWWjqdPD09q05rSivtayv7Hkwb+x7aGistnX98r91buhoravzKzBtL3ToaK3vbeos/a/2rXI0MXPoqGjw7/Su7j2t723qLG7tffTw9ax1sHWtNDQzeqzybXEuf2zzL7NttTTptfF0ru49tW71qHU2tDpxOK7+tW71tC008jr1bu1vbP21bu1xLn9s8yhozwvcD4KPHA+ICAgIL7Wsr+x5MG/se205rfFwcux4NLrxtq/ydaqtcS499bWu/mxvsr9vt3A4NDNo6hib29sZWFuoaJieXRloaJjaGFyoaJzaG9ydKGiaW50oaJmbG9hdKGibG9uZ6GiZG91Ymxlo6mhorbUz/PS/dPDo6hyZWZlcmVuY2XA4NDNo6m6zXJldHVybkFkZHJlc3PA4NDNo6jWuM/ywcvSu8z119a92sLr1rjB7rXEtdjWt6OpoaPG5NbQNjTOu7Oktsi1xGxvbme6zWRvdWJsZbvh1bzTwzK49r7Wsr+x5MG/v9W85KOoU2xvdKOpo6zG5NPgyv2+3cDg0M3Wu9W808MxuPaho77Wsr+x5MG/se3L+dDotcS/1bzk1Nqx4NLrxtq85M3qs8m31sXko6y1sb34yOvSu7j2t723qMqxo6zG5NDo0qrU2tah1tC31sXktuC087XEvtayv7Hkwb+/1bzkysfIt7aotcSjrLe9t6jUy9DQxtq85LK7u+G4xLHkvtayv7Hkwb+x7bXEtPPQoaGjPC9wPgo8cD4gICAgSmF2YdDpxOK7+rnmt7bW0LbUuMPH+NPyuea2qMHLwb3W1tLss6PH6b/2o7o8L3A+CjxwPiAgICAxo6nI58/fs8zH68fztcTJ7rbItPPT2tDpxOK7+sv51MrQ7bXEye62yKOsxdez9lN0YWNrT3ZlcmZsb3dFcnJvctLss6OhozwvcD4KPHA+ICAgIDKjqdDpxOK7+tW7tq/MrMCp1bnO3reoyerH67W91+O5u7XExNq05sqxo6zF17P2T3V0T2ZNZW1vcnlFcnJvctLss6OhozwvcD4KPGg2PjEuMwogsb612Le9t6jVu6OoTmF0aXZlIE1ldGhvZCBTdGFja6OpPC9oNj4KPHA+IAogICBKYXZh0OnE4rv6v8nE3LvhyrnTw7W9tKvNs7XE1bvAtNans9ZuYXRpdmW3vbeoo6jKudPDSmF2YdPv0dTS1M3itcTG5Mv80+/R1LHg0LS1xLe9t6ijqbXE1rTQ0KOs1eK49tW7vs3Kx7G+tdi3vbeo1bujqE5hdGl2ZSBNZXRob2QgU3RhY2ujqaGjsb612Le9t6jVu9Pr0OnE4rv61bu3x7OjwOAmIzIwMjg0O6Osx/ix8MrH0OnE4rv61bvOqtDpxOK7+ta00NBKYXZht723qKOo0rK+zcrH19a92sLro6m3/s7xo6y2/rG+tdi3vbeo1bvU8s6q0OnE4rv6yrnTw7W9tcROYXRpdmW3vbeot/7O8aGj0OnE4rv6uea3trbUsb612Le9t6jVu9bQtcS3vbeoysfTw9Pv0dShosq508O3vcq90+vK/b7dveG5ucO7x7/WxrnmtqijrNLytMvQ6cTiu/q/ydLU19TTycq1z9ajrMjnU3VuCiBIb3RTcG900OnE4rv61rG907DRsb612Le9t6jVu7rN0OnE4rv61bu6z7b+zqrSu6GjICAgICAgIEphdmHQ6cTiu/q55re21tC21LjDx/jT8rnmtqjBy8G91tbS7LOjx+m/9qO6PC9wPgo8cD4gICAgMaOpyOfP37PMx+vH87XEye62yLTz09rQ6cTiu/rL+dTK0O21xMnutsijrMXXs/ZTdGFja092ZXJmbG93RXJyb3LS7LOjoaM8L3A+CjxwPiAgICAyo6nQ6cTiu/rVu7avzKzAqdW5zt63qMnqx+u1vdfjubu1xMTatObKsaOsxdez9k91dE9mTWVtb3J5RXJyb3LS7LOjoaM8L3A+CjxwPjwvcD4KPGg2PjEuNCBKYXZhttGjqEphdmEgSGVhcKOpPC9oNj4KPHA+ICAgIEphdmG20crHSmF2YdDpxOK7+rncwO3E2rTm1tDX7rTztcTSu7/po6zKx8v509DP37PMubLP7bXExNq05sf40/KjrMvm0OnE4rv6tcTG9Lavtvi0tL2ooaO4w8f40/LOqNK7xL+1xMrHtOa3xbbUz/PKtcD9o6y8uLr1y/nT0LbUz/O1xMq1wP22vNTattHA78Pmt9bF5KGjSmF2YbbRysfArLv4ytW8r8b3udzA7bXE1vfSqsf40/KjrLG7s8bX96GwR0O20aGxoaM8L3A+CjxwPiAgICBKYXZh0OnE4rv6uea3trnmtqijrEphdmG20b/J0tSz9tPazu/A7cnPzu/A7cnPsrvBrND4tcTE2rTmv9W85NbQo6zWu9Kqwt+8rcnPwazQ+Ly0v8mjrMjnzay0xcXMv9W85NK70fmjrLzIv8nS1Mq1z9azybnMtqi089Cho6zSsr/J0tTKx8Cp1bm1xKOstbHHsNb3wffQ6cTiu/q2vMrHsLTV1cCp1bnAtMq1z9a1xKOozai5/S1YbXi6zS1YbXO/2NbGo6mhozwvcD4KPHA+ICAgIEphdmHQ6cTiu/q55re21tC21LjDx/jT8rnmtqjBy091dE9mTWVtb3J5RXJyb3LS7LOjo7rI57n7ttHW0MO709DE2rTmzeqzycq1wP231sXko6yyosfSttHO3reo1NnAqdW51PLF17P2T3V0T2ZNZW1vcnlFcnJvctLss6OhozwvcD4KPGg2PjEuNQogt723qMf4o6hNZXRob2QgQXJlYaOpPC9oNj4KPHA+IAogICC3vbeox/jT60phdmG20dK70fmjrMrHuPe49s/fs8y5ss/ttcTE2rTmx/jT8qOs08PT2rTmtKLSu7Gt0OnE4rv6vNPU2LXEwODQxc+ioaKzo8G/oaK+ssysseTBv6GivLTKsbHg0uvG97Hg0uu687XEtPrC67XIyv2+3aGjSmF2YdDpxOK7+rbU1eK49sf40/K1xM/e1sa3x7Ojv+3LyaOstKbA7brNSmF2YbbU0rvR+bK70OjSqsGs0Pi1xMTatOa6zb/J0tTRodTxucy2qLTz0KG78tXfv8nAqdW5zeKjrLu5v8nS1NGh1PGyu8q1z9bArLv4ytW8r6GjPC9wPgo8cD4gCiAgIEphdmHQ6cTiu/q55re21tC21LjDx/jT8rnmtqjBy091dE9mTWVtb3J5RXJyb3LS7LOjo7ogyOe5+7e9t6jH+LXExNq05r/VvOSyu8TcwvrX48TatOa31sXkx+vH86OsxMdKYXZh0OnE4rv6vavF17P20ru49k91dE9mTWVtb3J5RXJyb3LS7LOjoaM8L3A+CjxoNj4xLjYg1MvQ0Mqxs6PBv7PYo6hSdW50aW1lCiBDb25zdGFudCBQb29so6k8L2g2Pgo8cD4gICAg1MvQ0Mqxs6PBv7PYyse3vbeox/i1xNK7sr+31qGjQ2xhc3POxLz+1tCz/cHL09DA4LXEsOaxvqGi19a2zqGit723qKGivdO/2rXI0MXPos3io6y7udPQ0rvP7tDFz6LKx7Ojwb+z2KOs08PT2rTmt8Wx4NLrxtrJ+rPJtcS499bW19bD5rOjwb+6zbf7usXS/dPDo6zV4rK/t9bE2sjd1NrA4LzT1Ni687Tmt8W1vbe9t6jH+LXEs6PBv7PY1tChozwvcD4KPHA+ICAgIEphdmHQ6cTiu/q55re21tC21LjDx/jT8rnmtqjBy091dE9mTWVtb3J5RXJyb3LS7LOjo7ogtbGzo8G/s9jO3reoyerH67W9xNq05sqxxdez9k91dE9mTWVtb3J5RXJyb3LS7LOjoaM8L3A+CjxoNj4xLjcg1rG908TatOY8L2g2Pgo8cD4gICAg1rG908TatOayorK7ysfQ6cTiu/rUy9DQyrHK/b7dx/jT8rXE0ruyv7fWo6zSsrfHSmF2YdDpxOK55re21tC2qNLltcTE2rTmx/jT8qOstavV4rK/t9bE2rTm0rKxu8a1t7HKudPDo6yyosfSv8nE3LW81sJPdXRPZk1lbW9yeUVycm9y0uyzo7P2z9aho0phdmHQ6cTiu/rQ6NKquPm+3cq1vMrE2rTmtcS089ChwLTJ6NbDLVhteLXIss7K/dDFz6KjrMjnufu69sLUwcvWsb3TxNq05qOsyrm1w7j3uPbE2rTmx/jT8rXE19y6zbTz09rO78DtxNq05s/e1sajrLTTtvi1vNbCtq/MrMCp1bnKscXXs/ZPdXRPZk1lbW9yeUVycm9y0uyzo6GjPC9wPgo8aDY+MS44CiDSu77ktPrC68u1w/dKYXZh1buhokphdmG20brNt723qMf4yP249tfu1tjSqrXExNq05sf40/LWrrzktcS52MGqudjPtTwvaDY+CjxwPjwvcD4KPHA+PC9wPgo8cHJlIGNsYXNzPQ=="brush:java;">Object obj = new Object();
假设这句代码出现在方法体中:
1)“Object obj”这部分的语义反映到Java栈的本地变量表中,作为一个reference类型数据出现。
2)“new Object()”这个部分的语义反映到Java堆中,形成一块存储了Object类型所有实例数据值的结构化内存,以及查找到此对象类型的地址信息。
3)Object类的类型数据(如对象类型、父类、接口的实现、方法等)存储在方法区中。


----参考文献:《深入理解Java虚拟机 JVM高级特性与最佳实践》 周志明 著

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇hdu 4777 Rabbit Kingdom(状态压.. 下一篇Codeforces 444B DZY Loves FFT(..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: