java栈内存xss(Java栈内存溢出)
java中栈内存是什么意思?
堆内存:保存对象的真正数据,都是每一个对象的属性内容
栈内存:保存的是一块堆内存的空间地址,可以把它想象成一个int型变量(每一个int型变量只能存放一个数值)所以每一块保留一块堆内存地址,但是为了方便理解,可以简单的讲栈内存之中保存的数据理解为对象的名称(Person
per,保存的是per)
Java中栈内存和堆内存怎么理解?
Object obj = new Object();
以上这句话,会把obj这个引用放进栈内存,再说白一点,就是这个对象的名字obj放进栈内存,栈内存运行速度较快,用于查找索引(也就是名字)
而new Object()会在堆内存中开辟一块空间给这个对象,对象几乎所有的属性啊, *** 啊,全都在里面了,也就是对象的实体都在堆内存中 ,堆内存速度慢但是成本低,空间较大,用以存放程序
如何理解java的堆内存和栈内存?
堆和栈是虚拟出的概念他们在内存中都只是一块区域,只是他们的存取规则被人为的限制了,一般来说
把类似指针的地址数据放在同一块内存区域这块区域遵守栈的存取规则我们就称之为栈
然后把主要的数据放在同一块内存区域并遵守堆的存取规则
我们称之为堆
其实他们物理上都是一样的东西
只是我们附加上了一些概念
最后之所以这么做
是为了优化
存取速度
java栈内存溢出怎么产生
不只是Java而已。所有编程语言都会产生包子的问题。默认栈大小为2M,如果栈中的临时对象过多或者是过大就会爆栈
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。