当前位置:首页 > 内存 > 正文

线程内存空间分布图

  • 内存
  • 2024-08-17 06:21:16
  • 6810

一、根据代码,画出内存图(栈内存+堆内存)

show(newDemo());语句在堆中创建了一个对象i,分配给这个对象的内存地址指向一个变量d,与上面的d不同。这是一个局部变量,是该方法内的变量。

JVM堆栈将线程状态保存在帧中。当线程激活一个方法时,JVM创建一个当前帧来存储参数、局部变量、中间计算过程和其他数据。

(1)堆栈。它驻留在常规RAM(随机存取存储器)空间中,但支持直接通过其“堆栈指针”进行操作。当堆栈指针向下移动时,新的内存被创建;当堆栈指针向上移动时,它被释放。

除了寄存器之外,这是一种特别快速且有效的数据存储方式。在编写程序时,Java编译器必须准确地知道堆栈上保存的所有数据有多长和多长。

(2)堆。存储Java对象的通用内存池(也是RAM区域)。与堆栈相比,“内存堆”或“堆”最吸引人的地方在于,编译器不需要知道从堆中分配多少存储空间,而是不需要知道存储的数据将保留多长时间。不需要知道。在山里。

因此,您在使用堆存储数据时拥有更大的灵活性。如果需要创建对象,只需使用new命令并编译相关代码即可。

更多信息:

在微控制器应用中,堆栈用作RAM空间的一部分。函数调用和中切换。保存和恢复实时数据。堆栈中的对象具有特性。放置在堆栈上的第一个对象始终是放置在堆栈上的最后一个对象。此特性通常称为FILO(先进/后出)。

堆栈上定义了几个操作,其中最重要的两个是PUSH和POP。PUSH操作:将堆栈指针(SP)加1并向堆栈顶部添加一个元素。POP操作则相反;出栈时,先将SP指示的内部RAM单元的内容发送到直接地址(目标位置)指定的单元,然后再将SP指示的内部RAM单元的内容发送出去。由SP指定的单元被发送到由直接地址(目标位置)指定的单元,然后是由SP指示的内部RAM单元的内容。)减少1。这两个操作实现了数据项的插入和删除。

参考来源:-Stack