码迷,mamicode.com
首页 > 其他好文 > 详细

JVM学习(二)

时间:2015-06-14 19:44:14      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:

  Java中的内存的划分可以用下图来表示:

  技术分享

  程序计数器:每一个线程都有一个程序计数器,记录需要执行的下一条指令。

  HootSpot虚拟机中,不区分虚拟机栈和本地方法栈,统一称为栈。虚拟机栈和本地方法栈也是线程私有的,多个线程之间不会互相影响。

  虚拟机栈记录了线程的局部变量、部分结果,参与方法的调用与返回。本地方法栈用于管理本地方法,Java中的本地方法指的使用C语言实现的部分。

  堆是新对象在内存中的存储区域,也是JVM垃圾回收的主要区域。JVM的垃圾回收主要就是堆和方法区(永久代)。

  方法区主要存储的是类的元数据和一些常量数据。需要注意的是,方法区不包含在我们通常所说的堆中。方法区也成为永久代,但其中存储的数据并不是永久的,也是会被回收的。

  JVM的垃圾回收主要就是堆和方法区,需要判断对象是否还存在有效地引用,没有有效引用时,对象将被回收。程序计数器和栈所占的内存,当线程结束时,所对应的内存也就变为了无用内存。

 

  我们可以用-Xss指定栈的大小,栈的大小决定了方法可以调用的深度。对于方法而言,参数越多、局部变量越多,所占用内存越大,方法可以调用的深度就越小。

  

 

JVM学习(二)

标签:

原文地址:http://www.cnblogs.com/lnlvinso/p/4575470.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!