简单理解 栈、堆、静态存储区(方法区)
来源:互联网 发布:网络零售平台有哪些 编辑:程序博客网 时间:2024/05/16 03:51
静态存储区(方法区):
主要存放静态数据(全局唯一的)如:static、常量、class;
jvm只有一个方法区,被所有线程共享;
运行时jvm会在方法区开辟一个常量池空间。栈(stack):
存放基本数据类型和对象的引用。在方法(作用域)结束后会被释放;
每个线程包含一个栈区,每个栈中数据私有,不共享。堆(heap):
存放程序运行时new出来的对象(实例)和数组对象;
内存的分配由程序完成,当对象不在被引用指向时,可以被gc回收掉;
jvm只有一个堆区被所有线程共享。
拓展:
String s = "s";String s1 = "s";String s2 =new String("s");s==s1;//trues==s2;//false
s为栈中的引用,”s”为常量池中的对象,s的引用指向常量池中的常量对象“s”;s在创建时会先查找常量池中是否存在常量对象“s”,存在则指向,不存在则创建在指向。
s1直接指向常量对象“s”;
s2在堆中创建对象“s”,然后查找常量池中是否有常量对象“s”,有建立连接(s2.intern() 获取常量池中的地址)(此时创建一个对象),没有则创建在建立连接(此时创建两个对象)。
包装类
int i = 1;int i1 = 1;Integer i2 = 1;Integer i3 = 1;Integer i4 =128;Integer i5 =128;i == i1;//truei == i2;//truei2 == i3;//truei4 == i5;//false
i = 1 为基本类型 存放在栈中;
java 中基本类型的包装类除了float、double两个浮点类型都实现了常量池技术,另外Byte,Short,Integer,Long,Character这5个基本类型只在对应值小于等于127时才可以使用常量池,所以i4==i5时值为false;
第一次写博客,哪里写的不对,望大佬们指点一下。
阅读全文
0 0
- 简单理解 栈、堆、静态存储区(方法区)
- 堆,栈,静态存储区的理解
- 静态存储区、动态存储区、堆、栈理解
- 静态存储区、堆、栈
- 栈 , 堆 , 静态存储区
- 栈,堆,静态存储区
- 静态存储区、代码区、堆、栈
- C++:静态存储区,堆,栈区别
- 堆、栈和静态存储区
- C++堆,栈,静态存储区介绍
- 程序中的栈、堆、静态存储区
- 对静态区,栈,堆的理解
- 堆栈、堆、静态存储区
- C++5中内存分配方法,堆 栈 静态存储区 全局/静态变量 自由存储区
- 内存分配及变量存储位置(堆、栈、方法区常量池、方法区静态区)
- 内存分配及变量存储位置(堆、栈、方法区常量池、方法区静态区)
- 内存分配及变量存储位置(堆、栈、方法区常量池、方法区静态区)
- 内存分配及变量存储位置(堆、栈、方法区常量池、方法区静态区)
- JSON字符串和java对象的互转【json-lib】
- MaterialDesign学习篇(五),使用SearchView的正确姿势
- 小波变换的理解
- 从程序员小白到大神的正确打开方式!
- 排序算法一:冒泡排序,插入排序以及选择排序原理与MATLAB实现
- 简单理解 栈、堆、静态存储区(方法区)
- string.format的使用
- Attempted to lock an already-locked dir
- leetcode 160. Intersection of Two Linked Lists
- Android调试工具Log
- 学生信息管理系统整体理解
- HDOJ 1879 继续畅通工程 (Prim 最小生成树)
- 爬虫---BeautifulSoup库的解析器
- Delphi之18位身份证号码验证