javaSE-JVM 栈、堆、方法区

一、JVM三块主要的内存:栈内存、堆内存、方法区内存。

  • 方法区最先有数据:方法区中放代码片段。存放class字节码
  • 栈内存:方法调用的时候,该方法需要的内存空间在栈中分配。方法调用叫做:压栈。分配空间;方法结束叫做:弹栈。释放空间
  • 方法不调用是不会在栈中分配空间的。只有在调用的时候才会在栈中分配空间,并且调用时就是压栈。方法执行结束之后,该方法需要的空间就会释放,此时发生弹栈动作。
  • 堆:被所有线程共享的一块区域,在虚拟机启动时创建。
  • 特点:线程共享,存放的是对象实例(所有的对象实例和数组),GC管理。可储存物理上不连续的内存空间。

二、总结:

  • 栈:【局部变量】方法只要执行,会压栈。
  • 堆:【实例变量】new出来的对象都在堆中。垃圾回收器主要针对。
  • 方法区:【静态变量】类的信息,字节码信息,代码片段、常量。
  • 方法的代码片段放在方法区,但是方法执行过程当中需要的内存在栈中。
posted @   280887072  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示