Java 程序执行过程的内存分析

作者:帅飞,系投稿

来源:Java知其所以然

知音专栏

内存分析先知

栈:

1、每个线程私有,不能实现线程间的共享!2、局部变量放置于栈中。3、栈是由系统自动分配,速度快!栈是一个连续的内存空间!堆:1、放置new出来的对象!2、堆是一个不连续的内存空间,分配灵活,速度慢!方法区:1、被所有线程共享!2、用来存放程序中永远不变或唯一的内容。(类代码信息、静态变量、字符串常量)

注:常量池具有共享的机制,不同类的常量池之间共享数据。比如:Student 类常量池下有个 "老叶"字符串常量,那么当 Test 类中用到"老叶"这个字符串常量时就会去方法区的其他类的常量池中找,刚好 Student 类有,所以它直接就引用Student 类的"老叶"

开始分析

Student 类

Test1类

重点:注意看代码里的注释,我把每一条的语句的执行过程都做了很详细的讲解

注:基本数据类型会直接赋值,引用类型是把对象的地址赋值

这是对上面 Test1 类执行代码的内存分析图!!!

推荐大而全的【后端技术精选】

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180722A09NE800?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券