博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java中堆内存和栈内存的区别
阅读量:6651 次
发布时间:2019-06-25

本文共 563 字,大约阅读时间需要 1 分钟。

hot3.png

Java把内存分成两种,一种叫做栈内存,一种叫做堆内存

在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。

堆内存用于存放由new创建的对象和数组。在堆中分配的内存,由java虚拟机自动垃圾回收器来管理。在

数组和对象在没有引用变量指向它的时候,才变成垃圾,不能再被使用,但是仍然占着内存,在随后的一个不确定的时间被垃圾回收器释放掉。这个也是java比较占内存的主要原因。

按照编译原理的观点,程序运行时的内存分配有三种策略,分别是静态的,栈式的,和堆式的. 

静态存储分配是指在编译时就能确定每个数据目标在运行时刻的存储空间需求,因而在编译时就可以给他们分配固定的内存空间.

栈式存储分配也可称为动态存储分配,栈式存储分配要求在过程的入口处必须知道所有的存储要求,而堆式存储分配则专门负责在编译时或运行时模块入口处都无法确定存储要求的数据结构的内存分配。

从堆和栈的功能和作用来通俗的比较,堆主要用来存放对象的,栈主要是用来执行程序的.

转载于:https://my.oschina.net/u/2432490/blog/490799

你可能感兴趣的文章
ECMAScript 5 新特性 vol.2 - Array
查看>>
jQuery代码组织
查看>>
7大极好的移动应用开发J2ME工具
查看>>
7种JVM垃圾收集器特点,优劣势、及使用场景
查看>>
数字化经济具备的三大特征
查看>>
ZooKeeper分布式架构实战系列(01):ZooKeeper概念、功能、架构、与使用场景和面试题 ...
查看>>
CSS_伪元素_伪类
查看>>
ORACLE中Like与Instr模糊查询性能大比拼
查看>>
【深度分析】汽车零部件供应商管理+采购体系
查看>>
linux 天才排序算法??
查看>>
Java单例设计模式的理解与常规实现方式
查看>>
正则表达式上——基本语法
查看>>
PHPStorm File and Code Template
查看>>
AI技术加速普及喜大普奔?微软CTO认为应持谨慎乐观的态度
查看>>
mysql pxc强一致性集群
查看>>
SpringBoot三部曲之Controller 请求日志切面 AOP
查看>>
Innodb:insert 第一次进行乐观插入逻辑(二级索引)
查看>>
PHP异步:在PHP中使用 fsockopen curl 实现类似异步处理的功能
查看>>
DOM 深入学习 - 1
查看>>
编程语言之父谈语言设计,龟叔大赞 TypeScript
查看>>