本文向您介绍Java中内存划分的两种方式:一种是栈内存,另一种是堆内存。

Java 把内存划分红两种:一种是栈内存,另一种是堆内存。在函数中界说的一些根本类型的变量和目标的引证变量都是在函数的栈内存中分配,当在一段代码块界说一个变量时,Java 就在栈中为这个变量分配内存空间,当超越变量的效果域后,Java 会主动开释掉为该变量分配的内存空间,该内存空间能够立即被另作它用。

Java中的堆内存与栈内存分配浅析(Java中堆内存和栈内存详解)  堆内存 栈内存 Java内存分配 第1张

堆内存用来寄存由 new 创立的目标和数组,在堆中分配的内存,由 Java 虚拟机的主动废物收回器来办理。在堆中发生了一个数组或许目标之后,还能够在栈中界说一个特别的变量,让栈中的这个变量的取值等于数组或目标在堆内存中的首地址,栈中的这个变量就成了数组或目标的引证变量,今后就能够在程序中运用栈中的引证变量来访问堆中的数组或许目标,引证变量就适当所以为数组或许目标起的一个称号。引证变量是一般的变量,界说时在栈中分配,引证变量在程序运转到其效果域之外后被开释。而数组和目标自身在堆中分配,即便程序运转到运用 new 发生数组或许目标的句子地点的代码块之外,数组和目标自身占有的内存不会被开释,数组和目标在没有引证变量指向它的时分,才变为废物,不能在被运用,但仍然占有内存空间不放,在随后的一个不确定的时刻被废物收回器收走(开释掉)。

这也是 Java 比较占内存的原因,实际上,栈中的变量指向堆内存中的变量,这便是 Java 中的指针!

您正在阅览:Java中的堆内存与栈内存分配浅析

【修改引荐】

  1. Java与C++言语在效果域上的差异浅析
  2. 深化Java目标及元素的存储区域
  3. Java开发平台中的生命周期办理
  4. 简明剖析C/C++内存分配的解决方案
转载请说明出处
知优网 » Java中的堆内存与栈内存分配浅析(Java中堆内存和栈内存详解)

发表评论

您需要后才能发表评论