`

JAVA基础知识回顾-----Java堆内存和栈内存-----随想随写

阅读更多

Java堆内存和栈内存

 栈内存

   通常我们知道,Java栈内存一般用来存储基本数据类型的变量和对引用数据类型的引用;如果程序在执行过程中,超过了变量的作用域范围,栈中存储的变量或引用就会自动释放;而这个释放过程是与Java垃圾回收器无关的;

堆内存

   堆内存通常用来存储通过new字符创建的对象或数组,而堆中分配的内存是由垃圾回收器来管理的;一般来说,我们先通过new字符在堆中开辟一块内存空间,然后再在栈中定义一个引用变量来指向堆内存中对象的首地址;

 

栈内存中的变量  和 堆内存中对象  的生命周期的区别

   其实栈是程序执行的一个流程,当栈中的变量或引用超过生命周期后就会自动被系统释放,而堆中的内存不一样,堆中的对象即使在程序中不使用也会立即释放,他的释放时间是由Java虚拟机来决定的;

 

Java中的内存分配策略

   分为三种,静态分配,栈式分配,堆式分配

   静态分配:在编译的时候就知道数据目标所需的存储空间,因而在编译的时候就可以为其分配具体的内存空间。这种分配策略要求程序代码中不允许有可变的数据结构(比如数组)的存在;

   栈式分配:在编译时无法确定内存空间大小,但是在程序模块的入口处知道其存储大小;栈式存储是按照先进后出的原则进行分配的;

   动态存储 :在编译时或运行时模块入口处都无法确定存储要求的数据结构的内存分配,比如可变长度串和对象实例.堆由大片的可利用块或空闲块组成,堆中的内存可以按照任意顺序分配和释放.

 

栈和堆优劣分析

  栈中存储的变量:缺点-生命周期和大小确定,优点-存取速度快,栈数据可以共享

  堆中存储的变量:缺点-存取速度慢,优点-可以动态分配内存,生命周期不确定

6
1
分享到:
评论
1 楼 masuweng 2016-08-11  

相关推荐

    多因子模型系列报告之一----模型理论随想和纯因子组合构建

    多因子模型是一种统计模型,用于分析和解释股票收益的来源,通常用于投资组合管理和金融工程领域。该模型的基本思想是将股票的收益分解为一系列因子(如市场因子、规模因子、价值因子、动量因子等)的线性组合加上一...

    代码随想录-最强八股文(第五版)

    《代码随想录-最强八股文(第五版)》是一部综合性的编程知识合集,旨在帮助程序员,尤其是面试者,提升在前端、后端以及Java和Go等领域的技术素养。这一版本的内容涵盖了大量的面试常见问题,是程序员们准备技术...

    代码随想录知识星球精华-大厂面试八股文v1.1

    代码随想录知识星球精华-大厂面试八股文v1.1 代码随想录知识星球精华-大厂面试八股文v1.1 代码随想录知识星球精华-大厂面试八股文v1.1 代码随想录知识星球精华-大厂面试八股文v1.1 代码随想录知识星球精华-大厂面试...

    代码随想录+刷题笔记记录

    用户可以在记录中写下自己的解题思路、关键代码和总结等内容,方便日后回顾和复习。 ## 刷题笔记记录的优点 刷题笔记记录有以下几个优点: - 帮助用户更好地理解和掌握题目解法 - 促进用户对算法和数据结构的深入...

    中职教材语文(基础模块)(修订版)上册教学设计-随想二则2.pdf

    《平凡的魅力》这篇教学设计是针对中职语文基础模块上册的一篇阅读课,旨在让学生理解和欣赏汪国真散文中的独特魅力。教学设计注重培养学生的阅读理解能力、语言鉴赏能力和对人生价值的思考。 首先,教学设计从学生...

    代码随想录算法PDF.rar

    1. **基础数据结构**:数组、链表、栈、队列、树(二叉树、平衡树如AVL和红黑树)、图等基本数据结构的定义、操作和实现。理解这些数据结构是解决算法问题的基础。 2. **排序与查找算法**:冒泡排序、选择排序、...

    代码随想录最新第三版-最强八股文

    2. **Java**:深入剖析Java基础,包括内存模型、面向对象编程、集合体系、接口、Lambda表达式、类加载机制、内部类、代理类以及Java并发和JVM(Java虚拟机)的工作原理。这部分内容对于理解Java的运行机制至关重要。...

    编程随想:Java新手的通病.docx

    一些基本问题如何时选择数组或链表、散列函数的工作原理、递归的概念、算法复杂度的理解以及如何实现冒泡排序和二分查找等,都是衡量是否掌握这些基础知识的标准。对于不熟悉这些概念的新手,建议阅读经典的算法和...

    Java后端大厂面试八股文

    文档内容丰富,包括但不限于C++、Java、Go语言的基础知识,数据结构和算法,操作系统,数据库,计算机网络,设计模式,Linux等核心领域,并涵盖了近30份面试经验分享,各个岗位的学习路径,offer对比,以及程序员的...

    代码随想录的pdf版本,需要准备秋招的小伙伴们看过来呀!

    通过学习《代码随想录》,你可以系统地了解和掌握这些基础知识,为面试和工作中的问题解决做好准备。 书中可能包含以下核心知识点: 1. **基础数据结构**:数组、链表、栈、队列、哈希表、二叉树等。理解这些数据...

    计算机基础知识汇总.pdf

    虚拟内存和物理内存直接的关系、分段和分页、文件系统的基本原理都是操作系统的基础知识。 3. 计算机网络 计算机网络是计算机专业的基础知识,包括什么是分组交换、TCP可靠性传输原理、TCP/IP的协议细节、三次握手...

    代码随想录知识算法讲解PDF

    代码随想录贪心算法知识,非常管用

    代码随想录算法PDF.zip

    1. **基础数据结构**:包括数组、链表、栈、队列、哈希表、树(二叉树、平衡树如AVL树、红黑树等)和图等。这些是算法的基础,理解它们的特性和操作,能够帮助我们更有效地设计和实现算法。 2. **排序算法**:如...

    LeetCode刷题攻略-代码随想录+说明文档.zip

    其实我之前在知乎上回答过这个问题,回答内容大概是按照如下类型来刷数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论->高级数据结构,再从简单刷起,做了几个类型题目之后,再慢慢做中等...

    代码随想录单调栈算法详解及其应用

    内容概要:本文档深入解析了《代码随想录》中提到的单调栈算法,涵盖多种应用场景和题目解析。包括了每日温度预测、下一更大元素等问题的解决方法以及接雨水这类经典的算法挑战题。文中提供了详细的问题分析过程,...

    随想出题随想出题免费版

    随想出题是一款专为教育领域设计的软件,其免费版提供了基础的试题生成与管理功能,旨在帮助教师和学生更便捷地进行教学活动。这款软件的核心特点是简单易用,功能实用,尤其适合家庭学习和课堂教学环境。 1. **...

Global site tag (gtag.js) - Google Analytics