java 内存的分配
来源:互联网 发布:福建广电网络机顶盒 编辑:程序博客网 时间:2024/05/29 17:54
java 内存的分配
方法区
在编译时就分配好内存,在程序运行期间都存在。
主要存放静态数据和一些常量
栈区
函数的局部变量会在栈上创建,函数执行结束时这些存储单元就会被自动释放。
栈内存分配的运算速度很快,因为内置在处理器里面,容量有限(比如1M)
- 每个线程包含一个栈区,栈中只保存基本数据类型和局部对象的引用(不是对象),对象的实体都放在堆区中。
- 每个栈中的数据(基本数据类型和对象引用)都是私有的,其他栈不能访问。
堆区
可以用new来申请分配内存。
jvm只有一个堆区(heap)被所有线程共享。堆中存放所有的成员变量,以及局部变量的对象实体。
区别
栈是一块连续的内存区域,大小由操作系统决定 (相当于物流的仓库),
栈是先进先出,进出完全不会产生碎片,运行效率高且稳定。
堆是不连续的内存区域,堆内存比较灵活,但管理很麻烦,
频繁new/remove会造成大量的内存碎片,这样就会慢慢导致效率低下。
示例
public class Main { int a = 1; //堆里面 Student s = new Student(); //堆里面 public void XXX() { int b = 1; //栈里面 //引用在栈里面,引用对象在堆里面 Student s2 = new Student(); }}
- 成员变量全部存储在堆中(包括基本数据类型,引用和引用的对象实体)
- 局部变量的基本数据类型和引用存储于栈中,引用的对象实体存储在堆中
阅读全文
0 0
- java的内存分配
- Java的内存分配
- Java的内存分配
- Java的内存分配
- Java的内存分配
- Java的内存分配
- java的内存分配
- java的内存分配
- Java的内存分配
- java的内存分配
- java的内存分配
- Java内存的分配
- java 内存的分配
- Java的内存分配
- JAVA中内存的分配
- Java程序的内存分配
- Java内存分配的结构
- Java虚拟机的内存分配
- 临时总结:ZChongS项目中的抽取类型
- Hadoop实践(一)---Hadoop核心组件之MapReduce
- MyBatis Generator (MBG),如何实现生成的代码,对应的类和 mapper 文件保持与对应的表名大小写不变
- JavaWeb面试
- 关于TTL与RS232的探讨
- java 内存的分配
- CSS样式
- qml初学日记(1)
- 电子小知识
- lnmp环境下 加大php文件上传限制三步骤
- 纵向扩展与横向扩展
- 用Arduino监测MSSQL数据库中进程阻塞情况
- python写算法题:leetcode: 3. Longest Substring Without Repeating Characters
- 迭代器实现vector