1、Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。

2、运行时数据区域划分

  java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个区域,这些区域都有各自的用途,创建和销毁时间,有的区域随着虚拟机进程的启动而存在,有的区域则依赖用户线程的启动和结束而建立和销毁,根据《Java虚拟机规范(Java SE 7版)》的规定,java虚拟机分为以下区域。

  aaarticlea/png;base64,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" alt="" />

  2.1、程序计数器(Program Counter Register)

  程序计数器属于线程私有,是一块较小的空间,可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。每条线程都有独立的计数器,各条线程之间计数器互不影响,独立存储。此内存区域是唯一一个在java虚拟机规范中没有规定任何OutOfMemoryError情况的区域。

  2.2、java虚拟机栈(VM Stack)

  和程序计数器一样,都属于线程私有,生命周期与线程相同,描述的是java方法执行的内存模型,每个方法执行都会创建一个栈帧,用于存储局部变量表,操作栈,动态链接,方法出口等信息,每一个方法被调用直至执行完成的过程,就对应一个栈帧在虚拟机栈从入栈到出栈的过程。局部变量表存放了编译期可知的各种数据基本类型(Boolean,byte,char,short,int,float,long,double),以及对象的引用。

  这个区域规定了两种异常状况:如果线程请求的栈深度大于虚拟机所允许的深度,将抛出StackOverflowError异常;虚拟机栈在进行动态扩展时,无法申请到足够的内存,将抛出OutOfMemoryError异常。

  2.3、本地方法栈(Native Method Stack)

  本地方法栈与虚拟机栈所发挥的作用非常相似,他们之间区别不过是虚拟机栈为虚拟机执行Java方法(也就是字节码)服务,而本地方法栈则为虚拟机使用到的Native方法服务。

  举例(StackOverflowError):

  aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdkAAAEoCAIAAACb6xzpAAAY90lEQVR4nO3dW3QT953A8XnJux96zvah3eZk6TYvTfcssc+p9hzas5uQpGkOBLKBJJQOlAiaNElTuoGAocYQCTAEhSZcDCVOTrYhVsrFBoWLyYUsDWmK6iQ4IYiL7S4lpBeGPGzbANE+jDTzn5n/yJIs+WfJ38+ZB2ssjWZG8pe//xKWYQEApBnSOwAAsIyOjg7nQgcAQILR4W2xxL8HADDW0WIAkEeLAUAeLQYAebQYAOSN9hZ/8OFHBw8dTv6qm4WFhaWOl9He4sHff3LhT1YWAOpaDbRY+hQBQNXRYgCQR4sBQB4tBgB5tHg4MomIEU1J7wWA2jdki9PxJsMwmuJpZV3S9K2oHrXFqajhV34I3Y0NI6ZhLQ7ZeCYRcXc9ksjov+H5DoCxoagWm6Y3vkItzktFy+mn2s1U1K1kJhGxvyxjkKu9iXbj9mqlsplExHM1xtfAmFZci5PpeJOS31pvcSYR0Yw9K9Ri/cbVQAfX0WJgrCuyxbm5CjMZaLE9h2EYhvNd+9vJ3HozaVlJ076CEvD8Kmelt/YlttidE3AyqPzaH02p0xuRREZTRt8V/LcPuSNv33NXDcmuPtDundFiYCwrusVqjd0Wp+Nmvp9JM1/jpOkk1k6ue3vnCp6W51tfXovVzuWjpombd1Uuqup11CtkEtH8Jt20+mYZlJv4vhPcuL7Fzj2GTiQDGCNKaLFbY+8cRWBkrH5b97U7JvYOjXWGbnHgFb1IIpNf6399TJNnt5n+K/hHxpqeZhIRIxrVjIP9Gw9tMeNiANlsiS3O19h5KS8db/JMMhTd4qKnm4tqcehI0u5h4d45417/hENuq87qkBYbkUgkdA+cjTNfDKCQElvsjIKdKYh8VZX55KFarExnWJaVNM2kNcw5CvdyKprrasL/FgVvaj2zFYFYK9lV3u+g3lEqoc4Xq2+K0G/ck3ffdmkxgJJbHBwM5+YZTLPYcbGle8VvOK/d6V5nC77FN3ct50W3wE2UK7jfj0SjEf8mDN141r5Dp8z+jfv2c8j5EwBjCv/vDgDkDdFioyBaDAAVwbgYAOTRYgCQR4sBQF4NtJjPuwNQ90Z7i//4x7/8/sJFFhYWlvpeRnuLAWAsoMUAII8WA4A8WgwA8mgxAMgrrcV9fX0dNaKGdrU8dX+AwJhidBTXYucnf/j5rzZnV6XfL1hFzuPX19cnfb6HpVaeVNVQT8deT8dSbWHnqqgW23Wr1q5VlL2r0qkcOfUR5Vp5dlVDPR17PR1LtQXP1dAtJsQ1odaLXCvPsWqop2Ovp2OpNt+5GqLFYSE+Nnj8e9sevX29+c3Y5O8kZn5v26PHBo9XY3eLN5ZD7CDHNaqejr2ejqXa1HNVTouX7V3/zdjkeS88smDHQnuZ98Ij41vvWLZ3ffV2eki02Fa7A+TCP8Ovbr3+1a3Xj9jOjDDtsT+8qtteRn5/hkN7LHc2//ek5u2TmrdPXpJb7swvU5Zsn7J0+5Sl26cufWnqkl+O/A4LKqHF2hD/a8sty7qX7OpNHj712q/PvHn41Gsdb21p6W4Z99gEqRwTYp+q5PjEvv6OBuvEvgpvVhGW457NX/v86sXPr17s2fy16t27rOCx/yi+e9uu9IxFnZZlzVjUaS8Su1ay4LFMWnngJ7vPLNxz9mev9D9xYKCtZ3D96/+76c1z246ce+Ht853vfLwrfSH17ieTVh4Q2WFBzrkqrcXHBo9/Mzb58R0LXj150PfD3/PR/sW7F41vvaPCkxUhn4PnE2xx26bO8d99xLeT47/7SNumzupWcNSoeI77Oxqso9f3dzRUcJs+YS3ev+Grn/+t/+rf+vc/89Vh30nS9H2C48gp9BHowWP/fnPyR/HdtdJfVfBYJq/uuXP1wSltB6e0HZzadnBq28G71vTctabnP9f03L2m5+61PdPW9kxb2zN5dU8l96O4esgqs8X3bvnxrI65z77Vbv+0HzzxylOvrul+b1c2mx242B/f98Ssjrk/eH6B7h7tTxsNnpekqV3tuV3JLbZDHMxu2Hodzwc116jK5ri3paG/o2GIobFbG+XzZT0PsXe9N4thLU6tH3f1099evXQs9dS4Evc6afrvqmZafGbg/IxFnWcGzpd7X7pTPCKCx9K5cfbXb190/S0LCi+dG2cHNlboCTOEOm7xxHUzp2yYue3Xz2Wz2VOfnDa3Re3loV/+eO7zD8x9/oF7Ns+auG6m7h7T8SajqanJd2Jyp3nYp8vX4vubN9uDYqe8zjB5/Hcfub9589AZyyQikcio/HTm0j40utQcG/fva2re8Y2W7uuX7/9i25GGdb+55pn3jfv3WVZ+juL16/s3NYTe3tti5+cmaXo+8Tvs5yn4DOxae13X2uu611535cKeKxf2dK+9zl6KOpik6fnZTZpN8fSIt1g93tJabFmWMygOmzsePNl3fvBs4HbK+bbS8aaRrrHmcdx033/MiN14x+M33vH4272ZO6Nr7K99S9em+wIbK/SEqTWaYymzxeNb7/iXpRPXvdqezWbfPP32DUtu/nrzTV9vvumGJTePX3Zb04rvTFg5afyy20N3Iu7bk3S8qSkeL/D8LJavxU5w7QT/4pddTpTVTDuLNniRRCYVHYUxLq3F2RJz/A+3NGsX+7u9LQ3W69eeSDSE3j6kxUoAS2vxzpXXXh5ovzyw5XJ/++X+LZcH2i/3t+9cda393YIv6Kk98q2vpRY7izN37DjVe/T0zv8aPPTUqd8d8d+n6HAweCzJp2feOe/Jm+5tnb/8uf1v9N50b6uz3Hxf68QZyyfOWH7zfa3Jp4MjOVqsWzNx3cx/i09asCOezWYHL5771qopE+KTJ8QnP//2juTvuqdvfeiWddMLjIvNpPfJaF9QVym/jgR+cpOm0RSPm/5feS3LCm9xNjAv4bR4qN5FEplsNhU1IomMJ4KpqGHkV6aiuZ2NJBL5a6qpdL9ORY1IIpWIGIZhz3zkb+pu3t2aszIVtbfsrnSvY1/O5DZpFJ5PKSnHNzxjhi32NMWJRPg0hb7F6u+KpbXYsqyXV3zls4+WffZRq728vOIf7fXuC3rtuhf0QruntDj4fAt7DnrW2IegmwTwX1WZIWmKp73PYd9ZKDwunrGo8+FV3WqL+z/oPbVz/uWze64cWfzBs3MCxxj271Dgl33/AxU4xtxpdG+bP6/BNaHH8sJTs74/f8PUuW3vftD/YPOWqXPbps5tu2te292Pbpwd65qzau+c1XtnP7H7mXXzL1686L2p9gkTrIFnPiJ3objDUU6VNjJJ02iKJ3OPrJl0b6octfbk+DblezL4z1VpLf7B8wsmrJw8c+sDl/76aTab7Tlx+MEXFz15qD2bzVp/vfS9rQ9M2WD+aPsySyN/VtwnibLG+ek187voXM3TYvWmnke/wuNiN8FqjO3uOclLRQ1PdIdqcf4Kdk7t1b5YZ3w3S0U91wzcQSlD5OJzfE3LrQv3NQeXa1putU7s613Z8PG+a0+sbNDfWD9frD5Y3um/InpkWdZLLV/+7N2H//7eQy8t+7K9Jv9q3sDnf++/+reB/Rv+OXxPgt/IP40KPd/U/fWlwD4EZbBbYIP+cXHoc7hwi88MnLcX++Lgyb5TO+dfPtN95cji/3tj0ZFVkzRH6T+/SdPwjoSCh+yNlzdSvtPpH0Op9xQ8ll+snfPQz55dvXHX/7zz4Q9++oy9zFrcEW1LdRz4oPPwqc7Dp9r3Hp+zqrv35KD3ptonjO5MBscBRR6O+2BpHyCl4PZZ9T+w2lOh3VTlxsUnLpwe99iEuzbOenzHspOfnHZ+zv9w6eM1PT+fvnnOuMcmhLyPwtmJ/H45++/9mfEPLEIPuFCLhzlfrHZR+dpbPs+QWblYYFwc3KTztTLetQWG5fmhuucO7Jup+1GBHF/TcmvYYllWb0vDx/uu7W1p0N9YNy72DtJKHhfbXlz6pReXfsn+OrV+3JVPf3vl0rGrn/7WXq5cOpZa/08hexLcxfCBbO6nTb1lcI3vEDwXQwbRwX3yP4eLny/2hfjomqnn+09pT1puZ4I/QOqOFRoXK+fAdzLVYWXg39vgsWxYNW/x6hdPnj4XX//y/JZt81u2/bRl26xY17qd727ce3zj3uMb9h7fsOf46s5jDzzp+5UrfFzsP5P5lZ7YFHM4akDDN+u/Zf5r/anQbqpyLbYsa2l34obmiROfnGZ2/LC5a8UT+9Y0d60wO344bfOcpuWTlnYnLD1lJ/KDd/d3BXc/Az/IZbV4eO+jCHQxMIitSos1RR2yxe7dFFnkIXP8xk++VXixpyl6F+qnKZSH2T8e1P1K7Ffkf9nqyr+Cd+WT3At6XZoX9MJinG+x9vmmHIduOK/9iVKjFtzgcFvsmy8uPsTK8fp+AfXuQNktDp+SDh7LutiDL+56s/f4mda1L9rLinUvmbHuhR1HF3YcXZBfHnv2re/HfK9PFt/i3Fr3cgktDma3lBZrTkX1W2xZ1tLuxDeWTJyyYfbd7XPu3jzn7vY5UzbM/saSieEhtoI/mUbw+ansfDreNJxxcXY47y9W5x48l30RLDBHkcui8ra4oVrsvddUVDtxoZmjSASqP6TCOT4078aTzz0athyad6N1Yt/RhQ0f7/ri0YUN2kdZOy+sfKMCLbbtXHnt5YEtlwfcl/I0e+Od0/O8jyLk+Rb3ZSm4Rrm654J2g8NrscOeL44uaD+Tah46xGn1rRPqD1jg1Ror8Nho4+X51zQZz48Gld/5PQ9p8FhWtj688blX1rfvcpant3bd07r7nraee9oOTleWe1p3Bw6m2BZb6XhTk2k2BZ+DmsPRnIryWqw/FSPSYsuyjg0ev2vTA99eNf3f2+799qrpM7YO+fcoAj+Z3uly3wxjk2kOZ1w8HP4Uu2sCvXNfOFNeu1NWR6LRYsfFWe3LcNoW56/om9so5a0VBXKcmj7u+Orb7eV97xfvr749NX2cZVnaFgfmJzWDR3f0qP/VtrQWv7ziK5+dsF/N+0rolTSv0CjzxcHnm3oL79hBWZOONxmmGbheyAZzaz0Tc1apLbYni49uX3r+vc1/Odn559eW/rrgiFg9y74GBVc7V1Z2O1ANd4uef4UCd6E/luU/+3HbyiVt8cXK0nxPy46p8f1TVx64y1li+2b737enfcKEnUnPP5PhLQ47FeW1WHsq9HuoPBn856rMFo828v8HWj/JMHqF5XjXbV+wl923fWHXrfnlti/sujW3xrKsowsb7KXij2NJz7eXln357+8+9Jnygt5IKTS0L9uQx9535MDAOxv/dHrP8Tc2vtY2baipCUnBYxkc7A8u3W/03ru8y1z36uynXp/91Ovmk4fubd2d/nBAZJ+l0OLhyyQinvdU1FSKs9lR+VeESn2+qS/ojSCZFq9vfjCxenHvgZ+/0hYdzSG2Snkce35zcla8a+YT3TOf6J6zck/6w4HAe9rqHC2uBGVWoeZC7BhVOa6R55tAi0/1Hn1o2ne2LJnX/97RCt9xFZT6OP7xz2OrvypaDNfoGSDXyvOtGurp2OvpWKqNFsOvI08wyrXyfKuGejr2ejqWaqPFCCUY5Vp5vlVDPR17PR1LtZXQ4hoiHbF6I/14AmOI0VEX42IAqGm0GADk0WIAkEeLAUAeLQYAebQYAOTRYgCQR4sBQB4tBgB5lW1xOtao+1PVAICCKt7ixlg6/6WR/xrFSsca+TcMGIuq1mLLSprEuFS0GBijRqDFdl+SpmHk26z/0C1lfWMs5oQ8cHNlIkT5aKnGWDK3PveRt7kN6f4x0GyhwE4qO6Om0v26mHt3Dzm/MmnaW3ZXKqfFOXHqbvKrBlC/ymxx39lz6pJfrZ2jsJOifrqf4Qm2WzRP59QWq58mGDNjad1tc9dXP2NaP8rUbkGzk5qdCW1x4XtXf0Nw1iZNzzUDdxDceW+LfQ8BCwtLTS/ltLjv7DnfH1dUa+Ef//mi4p+5yH/Xtz7pGxd7diAwrlVvHPZ14S0U3MlkEePiAveu/hrgGQWrpyh4B/bNQgfCIn9FE0CVlNxiO8T6PHjnKNTuFWxxIE1WeIv9I+bSW6zfQpVbrCnqkC1WdpepCaDejXiLg3MUyvxs2ByFtpLpWGM542L9FjQ7GTJHoU6dFHnv6taspKmduNDMUcR81We+GKhfI99iK/S1O3fiIPjane5KplnOuFi/hcBO6nfGXV3avYe93uhvcf6KvrkN/7QygHpT2RZXzqh6Q9yo2hkA9Wj0tDgdawx5r0VFGTpSOwMAttHTYs8v8vLtG1U7A6DejaYWA8BYRYsBQB4tBgB5tBgA5NFiAJBHiwFAXsVa/Er6zIKX3pn29GssLCwsLKUuFWvxkZN/fv8Pn0r8eSMAqHmVbLH0sQBAraLFACCPFgOAPFoMAPJoMQDIo8UAII8WA4A8WgwA8mgxAMijxQAgjxYDgDxaDADyaDEAyKPFACCPFgOAPFoMAPJoMQDIo8UAII8WA4A8WgwA8mgxAMijxQAgjxYDgDxaDADyaDEAyKPFACCPFgOAPFoMAPJoMQDIo8UAII8WA4A8WgwA8mgxAMijxQAgjxYDgDxaDADyaDEAyKPFACCPFgOAPFoMAPJoMQDIo8UAII8WA4A8WgwA8mgxAMijxQAgjxYDgDxaDADyaDEAyKPFACCPFgOAPFoMAPJoMQDIo8UAII8WA4A8WgwA8mgxAMijxQAgjxYDgDxaDADyaDEAyKPFACCPFgOAPFoMAPJoMQDIo8UAII8WA4A8WgwA8mgxAMijxQAgjxYDgDxaDADyaDEAyKPFACCPFgOAPFoMAPJoMQDIo8UAII8WA4A8WgwA8mgxAMijxQAgjxYDgDxaDADyKtni9//wqfThAEBNqliLX0mfeWvwEgsLCwtLGUvFWgwAKBstBgB5tBgA5NFiAJBHiwFAHi0GAHm0GADk0WIAkEeLAUAeLQYAebQYAOTRYgCQR4sBQB4tBgB5tBgA5NFiAJBHiwFAHi0GAHm0GADk0WIAkEeLAUAeLQYAebQYAOTRYgCQR4sBQB4tBgB5tBgA5NFiAJBHiwFAHi0GAHm0GADk0WIAkEeLAUAeLQYAebQYAOTRYgCQR4sBQF7JLb5y5Urf2XNV3y8AGEtKbrGVzzELCwsLS6WWclpsWVYWAFA5ZbYYAFBBtBgA5NFiAJBHiwFAHi0GAHm0GADk0WIAkEeLAUAeLQYAeZVscdI0DDOprknHGo3GWNpKxxoNw2iMpTW30KwGgDGmouNif4zTsUb7cjrWaDQ2Nvqqaxe61lrsHBQAVExl5yi8MXarlY41GmbMF7F0rLExFjNpMQBUeL5YjbESrdyXSTW89oVkSItzY2bD8G9PndZImrmrKE1XU+l+nTSNxlgyt00z6d5UuXNna87KpGlv2V3pXse+7N/N/KQMAJSkzBb7/tqb+w3fWNgXRTfVyhpNu9IxM7/SexNl2O3P/lAtzl/Bzql/H9X9cNYmTc81A3cQHCJ7Wyz+V/hYWFhqZSmnxX1nz/n+2puvRmbS1ynvxHEs7aYvbFysGRl7y+e7YbKIcXE6eMv818p41zsKVgMdvAP7ZqEDYZG/vAegFlX+M5bsVnnDqVzK/97vTjMEU6YMc0MG2lVosaaoQ7ZY2V2mJgAMQxU+707zpongWFK5pH2rW35lOtaoHxcXmqNQMl5ki72vOiZN7cSFZo4i5qs+88UAylKNzx5Vh7XumuCEhWWFzxfn5ycaTVM/LvZeS30/hrNaue2QLda+WqhtseeteO7chn9aGQBKUC+fAx0+7wwAo1+tttgIIb1fAFCOWm2xZXlmFRgTA6hptdxiAKgXtBgA5NFiAJBHiwFAHi0GAHm0GADkVazFH3z40cFDh5O/6mZhYWFhKXWpWIsHf//JhT/xl8kAoByVbLH0sQBAraLFACCPFgOAPFoMAPJoMQDIG6kWp6KGEUlkPJeNaKrIvUxFlT+LmdtMJhExvNtUrhtcDQCj2MiNi9UaZxKRknKZigavnklEjEgk4ltvF5oWA6gtIzlHkYraQ+FSSxze4mgiEfGMrjOJSCSR0FwbAEazkZ0vTkUNIxLxljg3kjXcOYvgGmWOwilvxs6wJ9P2BV25AWA0G+nX7vzzxhnfwFa3xvdNZb44mnJH2541tBhATalei52xrNLFVNSIRKMR3ypD87JeaE2d0DrNzvfZ+Q4tBlBrRni+OJLIaOeLg2+KKPA2CV+Lc+vcWWJaDKDWjFiLM4mIO9nr1jiTSCjr7Ff2/GuyqWj+hsoUhzqXYQ+llUu0GEBNGaEWB95O7KbZfV3OW1bPC3WaCQ/PvLLnAi0GUGv4f3cAII8WA4A8WgwA8mgxAMijxQAgjxYDgDxaDADyaDEAyKPFACCPFgOAPFoMAPJoMQDIo8UAII8WA4A8WgwA8mgxAMijxQAgjxYDgDxaDADyaDEAyKPFACCPFgOAPFoMAPJoMQDIo8UAII8WA4A8WgwA8mgxAMijxQAgjxYDgDxaDADyaDEAyKPFACCPFgOAPFoMAPJoMQDIo8UAII8WA4C8/wcW0NubW3YiIgAAAABJRU5ErkJggg==" alt="" />

 public class TestStackSOF {
public long stackLenth = 1; public void stackSOF(){
stackLenth++;
System.out.println(stackLenth);
stackSOF();
}
public static void main(String[] args) {
TestStackSOF tss = new TestStackSOF();
try{
tss.stackSOF();
}catch(Throwable e){
System.out.println("stackLenth: "+tss.stackLenth);
try {
throw e;
} catch (Throwable e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}

  执行的结果:

  stackLenth: 326323

  java.lang.StackOverflowError

  at com.cn.TestStackSOF.stackSOF(TestStackSOF.java:9)

  at com.cn.TestStackSOF.stackSOF(TestStackSOF.java:9)

  如果把-Xss调到50M,执行的结果是:

  stackLenth: 1637043

  java.lang.StackOverflowError

  at com.cn.TestStackSOF.stackSOF(TestStackSOF.java:9)

   at com.cn.TestStackSOF.stackSOF(TestStackSOF.java:9)

  总结:不难看出,-Xss大小不一样,执行的结果也不一样。如果以后在项目中遇到java.lang.StackOverflowError异常,可以先检查代码是否有无限递归,如果不是,可加大-Xss大小再看运行效果。

  2.4、Java堆(Heap)

  java堆是Java虚拟机所管理的内存中最大的一块,被所有线程共享的内存区域。此区域唯一的目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。

  java堆是垃圾收集器管理的主要区域,也叫做”GC堆“。

  java堆的大小可扩展,通过-Xmx和-Xms控制,如果在堆中没有内存完成实例分配,并且堆也无法再扩展时,将会抛出OutOfMemoryError异常。

  举例(OutOfMemoryError):

  

import java.util.ArrayList;
import java.util.List; public class TestHeapOOM {
/**
* vm args -Xmn120M -Xmx1024M
*/
public static void main(String[] args) {
List<String> list = new ArrayList<String>();
while(true){
list.add("sss");
}
}
}

  运行结果:

  Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

  at java.util.Arrays.copyOf(Unknown Source)

  2.5、方法区(Method Area)

  方法区与Java堆一样,用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。方法区也叫做”永久代“,并非是指数据永久存在。该区域内存回收目标主要是针对常量池的回收和对类型的卸载。这个区域的回收成绩比较难以令人满意,尤其是类型的卸载,条件相当苛刻。但这部分内存回收是必要存在的。当方法区无法满足内存分配需求时,将抛出OutOfMemoryError异常。

  2.6、直接内存(Direct Area)

  直接内存并不是虚拟机运行时数据区的一部分,也不是Java虚拟机规范中定义的内存区域。但是这部分被频繁的使用,也可能导致OutOfMemoryError异常出现。

  直接内存不受Java堆大小的限制,在JDK1.4中新加入了NIO(New Input/Output)类,NIO的Buffer提供一个可以直接访问系统物理内存的类——DirectBuffer。DirectBuffer类继承自ByteBuffer,但和普通的ByteBuffer不同。普通的ByteBuffer仍在JVM堆上分配内存,其最大内存受到最大堆内存的限制。而DirectBuffer直接分配在物理内存中,并不占用堆空间。在访问普通的ByteBuffer时,系统总是会使用一个“内核缓冲区”进行操作。而DirectBuffer所处的位置,就相当于这个“内核缓冲区”。因此,使用DirectBuffer是一种更加接近内存底层的方法,所以它的速度比普通的ByteBuffer更快。

《深入理解java虚拟机》笔记(1)运行时数据区域的更多相关文章

  1. 深入理解Java虚拟机一:运行时数据区域

    根据<Java虚拟机规范(第2版)>的规定,Java虚拟机管理的内存包括下图几个运行时数据区域: 1.程序计数器        程序计数器(Program Counter Register ...

  2. Java虚拟机一:运行时数据区域

    java虚拟机在执行java程序的过程中,会把内存划分为若干个不同的数据区域.每个区域都有各自的用途,创建和销毁时间,按照<java虚拟机规范(Java SE 7 版)>的规定,虚拟机运行 ...

  3. Java 虚拟机中的运行时数据区分析

    本文基于 JDK1.8 阐述分析 运行过程 我们都知道 Java 源文件通过编译器编译后,能产生相应的 .Class 文件,也就是字节码文件.而字节码文件通过 Java 虚拟机中的解释器,编译成特定机 ...

  4. 深入理解Java虚拟机 -- 读书笔记(1):JVM运行时数据区域

    深入理解Java虚拟机 -- 读书笔记:JVM运行时数据区域 本文转载:http://blog.csdn.net/jubincn/article/details/8607790 本系列为<深入理 ...

  5. 深入理解Java虚拟机-JVM运行时数据区域

    一.运行时数据区域 1.程序计数器 程序计数器( Program Counter Register) 是一块较小的内存空间, 它可以看作是当前线程所执行的字节码的行号指示器. Java虚拟机的多线程是 ...

  6. 深入理解JAVA虚拟机之JVM性能篇---基础知识点(运行时数据区域)

    一. 运行数据区域划分 各个数据区域功能如下: 1. 程序计数器: 较小的一块内存空间,可以看做是当前线程所执行的字节码的行号指示器,每条线程都有一个独立的程序计数器,各条线程之间计数器互不影响,独立 ...

  7. JVM学习笔记:Java运行时数据区域

    JVM执行Java程序的过程中,会使用到各种数据区域,这些区域有各自的用途.创建和销毁时间.根据<Java虚拟机规范>,JVM包括下列几个运行时数据区域,如下图所示: 其中红色部分是线程私 ...

  8. Java虚拟机(一)结构原理与运行时数据区域

    我们来学习Java虚拟机的结构原理与运行时数据区域. 1.Java虚拟机概述 Oracle官方定义的Java技术体系主要包括以下几个部分: Java程序设计语言 各种平台的Java虚拟机 Class文 ...

  9. Java虚拟机 - 结构原理与运行时数据区域

    http://liuwangshu.cn/java/jvm/1-runtime-data-area.html 前言 本来计划要写Android内存优化的,觉得有必要在此之前介绍一下Java虚拟机的相关 ...

随机推荐

  1. HTML5 实现文件拖放上传

    1. [图片] 5375acf5gw1dusqsscfksj.jpg ​2. [代码][HTML]代码 <!DOCTYPE html><html lang="en" ...

  2. Swift Optional Chaining

    Optional Chaining介绍 关于「optional chaining」,<The Swift Programming Language>是这么描述的: Optional cha ...

  3. C++之构造函数、参数列表、析构函数

    参考自:https://blog.csdn.net/sunSHINEEzy/article/details/78122485 构造函数之默认构造函数(调用的构造函数不用传递参数) 两种实例化方式都是默 ...

  4. JavaScript-Tool-导向:jquery.steps-un

    ylbtech-JavaScript-Tool-导向:jquery.steps 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 0. http://www.jqu ...

  5. centos7升级最新内核

    由于最近在测试ceph 的straw2算法,但是要使用straw2需要最新为4.1.0的内核,因此决定将虚机内核升级最新4.11.4. 步骤1.检查本机内核版本 #uname -sr 3.10.0-5 ...

  6. U盘安装 Linux 显示 “Faild to copy file from CD-ROM”

    解决方案 使用 UltraISO 刻录 U盘做镜像时,出现这种情况.查阅别人的 blog,尝试手动挂载发现还是不能成功.然后使用 win32diskimager 重新刻录,再次安装时未出现该情况. 参 ...

  7. windows install JDK&&JRE

    重装系统后,安装的java环境没了,只能重装一下~~~~ 1.下载JDK 2.这里会安装两次,其中第一次为安装 JDK,第二次安装JRE,建议不要将这两个放在同一个文件夹. 3.配置环境变量 用鼠标右 ...

  8. 前端学习之——js解析json数组

    ** 前端学习之——js解析json数组** 解析json数组即对JSONArray的遍历 一.对于标准的json数组如: var result=[{"flag":1," ...

  9. webix前端架构的项目应用(项目框架为Web API+autofac+ioc+mysql+webix)

    webix框架兼容javascript.HTML.CSS,应用比较灵活,应用框架时,配合后台webAPI,整个web项目里面,App文件夹保存前台的多语言文件,图片文件,webix原代码js.css, ...

  10. TypeScript完全解读(26课时)_20.声明文件

    首先学习识别已有的js库的类型 识别已有的js库的类型 UMD既可以作为全局库使用,也可以作为模块使用 先在着手来编写一个全局的库 新建文件 接收一个title,改变页面title的值 这里用到 &a ...