技术中心

这里象征着我们的态度和能力

>JVM Memory
作者:中国IT实验室    来源:中国IT实验室    发布时间:2012-01-01      浏览次数:5863
分享到:
欢迎进入Java社区论坛,与200万技术人员互动交流 >>进入

  ? Stack Memory (栈内存)  <http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html>: 虚拟机的每一个线程都有一个私有的栈,当一个方法被调用时,下面内容被作为一个Frame (帧) <http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html>被创建并且被压入栈中:

  + 局部变量:包括基本数据类型,对象的引用和返回值地址。

  + 一个自己的操作栈:帧内局部变量进行运算时使用,也用于传递方法的参数和接受方法的返回值。

  + 一个当前方法所在类的Runtime constant pool (常量池) <http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html>的引用。

  方法调用完成时,帧出栈,并销毁,无论方法是正常结束还是有未捕获的异常。

  ? Heap Memory(堆内存) <http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html> : 虚拟机的堆内存保存的是对象,类变量以及实例变量,它被所有线程共享,常说的垃圾回收就是对堆内存的回收。

  +-----------------------+

  |    Stack Memory       | ----------> 线程私有

  +-----------------------+

  |         ^             | -------+

  +---------|-------------+        |

  |         |             |        |

  +----Heap Memory--------+        |

  |         |             |        |--> 线程共享

  +---------|-------------+        |

  |         v             |        |

  +-----------------------+        |

  |    Method Area        | -------+

  +-----------------------+

  当JVM加载一个class时 ,将该类的一些信息保存到Method Area,包括Runtime constant pool ,方法数据,方法和构造器代码,域等。Runtime constant pool 则 包括类名,父类名,静态变量等。

  Method Area在逻辑上属于Heap。不过它垃圾回收与Heap可能不同,取决于JVM的实现。

  当通过new Class()方式创建一个实例时,JVM在Method Area寻址到该类的基 本信息, 同时进行相关实例的初始化(包括实例变量),存贮在Heap中。

4000-880-989
(24小时热线)
联系客服
微信公众号

官方公众号

小程序

©2008-2022 CORPORATION ALL Rights Reserved. 昆明奥远科技有限公司版权所有 滇ICP备09003328号-1 滇公网安备 53011102000818号 增值电信业务经营许可证号:滇B2-20110045
昆明那家网络公司好,新媒体运营,网站优化,网络推广,网站建设,网页设计,网站设计,网站推广,云南网站公司,昆明新媒体公司,云南网红主播,昆明SEO公司,昆明网站建设,昆明网络推广,昆明网站优化,昆明网站推广,红河网站建设,大理网络公司,曲靖网络公司,丽江网站设计,昭通网络公司,保山大数据服务,智慧高速建设,智慧校园服务,云南IDC服务商,网络安全测评,等保测评,网站关键词排名优化服务,服务客户尽超2000余家,一切尽在奥远科技,服务电话:13888956730