堆和栈对于cpu影响到底有多少?Java在什么情况下要考虑堆栈问题?谢谢各位大牛
首先,堆和栈和CPU没有关系,也不是我们能使用的,我们开发中没有操作堆和栈的权利;堆和栈是Java虚拟机的内存模型中的两种不同的内存模型,各自有自己的作用。其次,堆是虚拟机存放Java对象的地方,所有我们代码中new的对象都存在堆内存中的,而方法中定义的变量即赋值语句左侧的变量都是存在栈中的。栈的作用是实现Java方法调用的内存模型。最后,堆是所有线程共享的内存区域,所以堆中对象的并发访问可能会涉及同步问题,而栈是线程私有的,Java虚拟机会为每个创建的线程都分配一个线程栈的。
堆和栈是内存的一部分,与内存有关,和cpu处理器无关,怎么分辨呢?堆就是存放真实的对象,栈中存放基本类型的变量,例如int, String等等,栈中一般的数据可以共享
,堆中还存有字符池而不是常量池,这是字符串特有的,还有就是java的所有内存运行起来不是人管理的,而是全由jvm管理的,你可以看看jvm运行管理
机制了解一下内存,你问的什么时候注意内存呢,这个应该写久了,你会发现怎么写更有效率,怎么写复杂度最小,内存不要太担心。
堆栈和CPU没有关系,在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,堆内存用于存放由new创建的对象和数组.