java 内存分配问题

2025-02-24 09:03:27
推荐回答(4个)
回答1:

整形是基本数据类型 是在栈上

要想放在对空间

可以用Integer对象的形式放在对空间中

引用类型都是有两块内存区域的

一个区域指向另一个对象

方法完毕 栈中的数据消失,对象继续存在

直到整个进程完毕

马士兵老师说的对 如果理解了内存就很容易分析以后面试的时候那些破题了

工作还是工作 学java一般不怎么分析这个

我目前 也就是面试的时候能用得着 一般还是项目

回答2:

java 的内存分配有交给java虚拟机做的。开发人员不需要考虑内存配分问题,只需考虑给的最大内存空间够不够虚拟机实用。
如果你定一个int i=123;那么当执行时候,虚拟机就为这个i变量分配一个内存空间,但至于到底怎么分配的,估计只有写JAVA虚拟机代码的人才知道。一般如果是开发C,这种就比较在乎了,但是JAVA,不关也没什么。

回答3:

你只需要知道基础类型在栈上,引用类型在堆上,通过在栈上的地址来引用堆上的引用类型,int是基本类型,放不了在堆上,如果要放在堆上,可以封装到Integer里,只要是引用(对象)类型,就一定在堆上。

回答4:

说简单点吧堆是先进先出,而栈是先进后处 1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。