java虚拟机知识和 内存 堆(heap)、栈(stack)和方法区(method)

时间:2022-12-20 15:56:01

1.虚拟机实例

每个java程序都运行在自己的java虚拟机实例中,运行三个java程序就会得到三个虚拟机实例

守护线程(虚拟机自己使用,比如说执行垃圾收集任务的线程)

非守护线程(java初试线程,启动main方法的主线程,以及main中启动的的其他线程)

java虚拟机实例生命周期:当程序的所有非守护线程终止,虚拟机实例也会跟着退出,只要还有任何非守护线程在运行,那么这个java程序也在运行(虚拟机仍然存活)

JAVA的JVM的内存可分为3个区:堆(heap)、栈(stack)和方法区(method)
堆区:
1.存储的是new出来的对象和数组,每个对象都包含一个与之对应的class的信息。(class的目的是得到操作指令)
2.jvm只有一个堆区(heap)被所有线程共享,堆中不存放基本类型和对象引用,只存放对象本身
栈区:
1.每个线程包含一个栈区,不共享,栈中保存的是所有的变量,包括基本类型和引用类型,栈中的每个变量都包含类型、名称、值这些内容,只不过基本类型变量的值为一个具体的值,而引用类型的变量的值为对象在堆中的地址。
2.每个栈中的数据(原始类型和对象引用)都是私有的,其他栈不能访问。
3.栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令)。

4.存储方法的调用状态-包括他的局部变量,传来的参数,返回值,运算的中间值等
方法区:
1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。

2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

3.字符串常量池就是存放在方法区。(具体原因参见:http://zangxt.iteye.com/blog/472236)

java虚拟机中引用类型:

类类型:对类实例的引用

接口类型:对实现接口的某个类实例的引用

数组类型:数组对象的引用

null表示该引用变量没有引用任何对象

java虚拟机知识和 内存 堆(heap)、栈(stack)和方法区(method)的更多相关文章

  1. (转)Java里的堆(heap)栈(stack)和方法区(method)(精华帖,多读读)

    [color=red][/color]<一> 基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收.   引用数据类型,需要用new来创建,既在栈 ...

  2. Java里的堆&lpar;heap&rpar;栈&lpar;stack&rpar;和方法区&lpar;method&rpar;

    基础数据类型直接在栈空间分配, 方法的形式参数,直接在栈空间分配,当方法调用完成后从栈空间回收.   引用数据类型,需要用new来创建,既在栈空间分配一个地址空间,又在堆空间分配对象的类变量 . 方法 ...

  3. &lbrack;转&rsqb;JVM 内存初学 &lpar;堆&lpar;heap&rpar;、栈&lpar;stack&rpar;和方法区&lpar;method&rpar; &rpar;

    这两天看了一下深入浅出JVM这本书,推荐给高级的java程序员去看,对你了解JAVA的底层和运行机制有比较大的帮助.废话不想讲了.入主题: 先了解具体的概念:JAVA的JVM的内存可分为3个区:堆(h ...

  4. JVM 内存初学 堆&lpar;heap&rpar;、栈&lpar;stack&rpar;和方法区&lpar;method&rpar;

    这两天看了一下深入浅出JVM这本书,推荐给高级的java程序员去看,对你了解JAVA的底层和运行机制有比较大的帮助.废话不想讲了.入主题:先了解具体的概念:JAVA的JVM的内存可分为3个区:堆(he ...

  5. 转:JVM 内存初学 &lpar;堆&lpar;heap&rpar;、栈&lpar;stack&rpar;和方法区&lpar;method&rpar; &rpar;

    原文地址:JVM 内存初学 (堆(heap).栈(stack)和方法区(method) ) 博主推荐 深入浅出JVM 这本书 先了解具体的概念:JAVA的JVM的内存可分为3个区:堆(heap).栈( ...

  6. JVM 内存初学 &lpar;堆&lpar;heap&rpar;、栈&lpar;stack&rpar;和方法区&lpar;method&rpar; &rpar;(转载)

    想想面试的时候很多会问jvm这方面的问题虽然还是菜鸟不太能用到现在但是还是了解一下, 找资料的时候看见个大佬写的很好转载到这方便以后自己复习和给大佬做宣传 以下为大佬的博客原文: 这两天看了一下深入浅 ...

  7. java面试之----堆&lpar;heap&rpar;、栈&lpar;stack&rpar;和方法区&lpar;method&rpar;

    JAVA的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method)也叫静态存储区. 堆区: 1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的 ...

  8. JVM的堆&lpar;heap&rpar;、栈&lpar;stack&rpar;和方法区&lpar;method&rpar;

    JVM主要由类加载器子系统.运行时数据区(内存空间).执行引擎以及与本地方法接口等组成.其中运行时数据区又由方法区Method Area.堆Heap.Java stack.PC寄存器.本地方法栈组成. ...

  9. JVM内存—堆(heap)栈(stack)方法区(method) &lpar;转&rpar;

    JAVA的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method) 堆区:1.存储的全部是对象,每个对象都包含一个与之对应的class的信息.(class的目的是得到操作指令 ...

随机推荐

  1. 让tomcat支持中文cookie

    这的确是一个不正常的需求,按照规范,开发者需要将cookie进行编码,因为tomcat不支持中文cookie. 但有时候,你不得不面对这样的情况,比如请求是由他人开发的软件,比如,浏览器控件发出的. ...

  2. 兼容可控硅调光的一款LED驱动电路记录

    1.该款电路为兼容可控硅调光的LED驱动电路,采用OB3332为开关控制IC,拓扑方案为Buck: 2.FB1:磁珠的单位是欧姆,而不是亨利,这一点要特别注意.因为磁珠的单位是按照它在某一频率 产生的 ...

  3. Android Killer工具用法

    一.工程信息 工程信息主要是解析的AndroidManifest文件 二.工程管理器 三.配置插入代码 在代码中点右键就可以一键插入代码了 四.字符串搜索功能 支持正则, 比jeb搜索功能强大 来自为 ...

  4. ASIHTTPRequest 记录过去5秒的平均流量字节&sol;秒

    //记录过去5秒的平均流量字节/秒 NSLog(@"%llu",[ASIHTTPRequest averageBandwidthUsedPerSecond]);

  5. 给定表达式&lbrack;x&sol;2&rsqb; &plus; y &plus; x &ast; y&comma; 其中x&comma;y都是正整数。

    改进了一下,不过还是要十多秒吧. package com.boco.study; import java.math.BigDecimal; import java.util.Calendar; imp ...

  6. EJB 总结学习(1)

    总结1: 以下面这行代码为例: PersonDaoBeanRemote pdb = (PersonDaoBeanRemote)ctx.lookup("PersonDaoBean/remote ...

  7. &OpenCurlyDoubleQuote;MVC&plus;Nhibernate&plus;Jquery-EasyUI” 信息发布系统 第六篇(图片新闻的添加以及带分页的静态页的生成)

    “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第六篇(图片新闻的添加以及带分页的静态页的生成) 一.这篇文章主要是要实现:图片新闻的添加,无刷新图片的上传,以及添加新闻静 ...

  8. 磁盘IO的性能指标 阻塞与非阻塞、同步与异步 I&sol;O模型

    磁盘IO的性能指标 - 蝈蝈俊 - 博客园https://www.cnblogs.com/ghj1976/p/5611648.html 阻塞与非阻塞.同步与异步 I/O模型 - 蝈蝈俊.net - C ...

  9. CodeForces - 367E:Sereja and Intervals(组合数&amp&semi;&amp&semi;DP)

    Sereja is interested in intervals of numbers, so he has prepared a problem about intervals for you. ...

  10. osx安装启动mysql

    安装mysql 最新版 56 brew install mysql 1 启动报错 ben:~ soul$ which mysql /usr/local/bin/mysql ben:~ soul$ my ...