其实之前在学习java的时候还不太理解关于堆和栈内存的一些关系,或许只是简单的了解,从核心出发的话,我并没有了解到,甚至是一些基本的东西都没有了解到,以至于后期在学习的时候有点是懂非懂的感觉,所以这几天空了下来,就把java基础方面的知识点进行了一些温习,所以这几天可能会分享一些基础方面的java知识点,希望大家继续支持我的博客,谢谢。
首先对于一个java内存运行原理来说,大致的话会分为寄存区、方法区(还有个本地的)、栈内存、堆内存这几个区域,对于其他的几个区域我暂时不多做说明,今天主要分项的就是堆内存和栈内存。
对于栈内存来说,是一个短暂的区域,只要它负责的区域结束或者没有东西了,那么他就会自动的释放掉,所以它的区域主要是放置一些局部变量的。
而对于堆内存来说就比较大一些,而且存放的比较久,主要存储的就是一些数组和对象之类的东西,当然,数组算做是对象的一种表现形式,所以在我们的Java程序中new出来的对象基本就建立在堆内存中了。那么堆内存中的特点主要有以下几点:
每一个实体都有一个地址值,这个值是一个初始值;
每一个标量都有一个默认初始化值,根据类型的不同会有所不同,大致是整数是0、小数是0.0或者是0.0f、boolean类型是false、char是‘/u0000’
有一个垃圾回收机制,这个垃圾回收机制会不定时来进行垃圾回收。(其实我个人认为如果有垃圾就马上回收或者是达到一个什么类型的值,这个值也可以是人工设定的,那么这样来进行一个回收会不会更好呢?当然,这只是智言我的个人想法)
所以当今天把所有的一些基础知识温习了一遍后,发现自己之前其实还是有一些地方是属于不懂装懂的自我认识良好迷惑状态,智言在这里也希望各位在学习的时候一定是一种把自己放在永远不懂的情况下去学习,有时候我们自认为的懂了,其实是一种不懂的行为,所以智言也希望跟大家一起继续努力,把编程学习的更好。