java堆外内存泄漏排查 java哪些数据存在堆里哪些数据存在栈里?
java哪些数据存在堆里哪些数据存在栈里?
堆栈存储基本数据类型,如int、Boolean和string。堆包含对象和数组。
JAVA变量存放在栈中还是存放在堆中?
堆栈内存:调用函数时,该函数将在堆栈内存中应用空间。稍后,函数中定义的变量将分配给函数应用的堆栈。当函数完成时,分配给函数的堆栈空间被收回,函数中定义的变量被释放并消失。
堆内存:由new生成的数组和对象在堆内存中分配。堆内存中分配的内存由JVM提供的GC(垃圾收集机制)管理。在堆内存中生成数组对象之后,我们还可以在堆栈中定义一个变量。堆栈中变量的值等于堆中对象的第一个地址。堆栈内存中的变量成为堆内存中数组或对象的引用变量。将来,我们可以直接使用堆栈中的变量来访问在堆中分配的数组或对象。引用变量等效于数组或对象的别名或代号。
参考变量是一个公共变量,定义时在堆栈中分配。当引用变量在其作用域之外运行时,它将被释放,而我们的数组和对象将在堆中分配。即使程序运行到新语句用于生成对象的函数或代码之后,我们刚刚生成的数组和对象也不会被释放。数组和对象成为垃圾,只有当没有指向它的引用变量时,也就是说,没有值等于其第一个地址的引用变量时,才会使用它们。但是,它们仍然占用内存空间(这是Java消耗内存的原因之一),并且它们在不确定的时间被垃圾收集器收集。
java堆外内存泄漏排查 java堆内存多大合适 java命令查看堆内存
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。