按我不太官方的说法来理解
1.堆 :动态类的概念 是在运行时候确定的
2.栈:静态类的概念 是在编译时候确定的
从访问效率来看:堆 动态 速度慢
3.从访问权限 栈上的数据调用都是在栈上的 被调用后 栈上的数据无法被另一个函数访问
不同函数之间的栈数据不能共享 同样也使用多线程的调用
堆:只要在这个进程上 在application 内所有的线程都可以访问这个堆上的数据
堆上的数据申请了以后 在不同的编程语言下可能处理的方式不同
4..堆和栈什么时候使用
当你的数据不确定时肯定用堆
当你的数据确定时,肯定用栈 由于效率问题 他会极大提高你的运行速度
如果使用的内存非常庞大的话 一般使用堆 因为你用完了赶快释放掉 有时候会失败 要判断 你的对象是否会申请内存 你的项目成功了 如果没成功你可能要驶入一个exception 做一些后备选项 报错也是一个后备选项