java 程序运行过程中如何进行内存分配的或者介绍下内存分配的过程

面对这样的面试题:
java 程序运行过程中如何进行内存分配的或者介绍下内存分配的过程,请详细描述,谈谈你的理解!
我第一时间想到的是堆栈相关的知识点考察,所以面试的过程中通过一个例子说明了一下,很简短的说完了,感觉面试官不太满意,各位如果遇到类似的问题,该如何回答才能得到面试官加分!
Java 内存区域详解有没有结合这个回答的必要。

阅读 4.4k
1 个回答
  • 内存分配首先要知道内存的数据区域有哪些?
    虚拟机栈,程序计数器,堆,方法区,本地方法区。
  • 知道了内存分配主要在堆上进行后,由于垃圾回收机制的存在,具体又是怎么分配的?
    堆分为新生代,老年代,永久代。
    对象分配主要在新生代中的Eden区域中,如果经过多次GC对象还存活,那么对象将进入老年代。如果启动了本地线程分配缓冲,则按线程优先在TLAB中分配。大型对象直接分配到老年代。
  • 为什么大型对象直接分配到老年代?
    新生代的垃圾回收机制采用复制算法(复制算法的问题)。
  • 空间分配担保是怎么回事?
    在新生代的对象有可能提前进入老年代。
  • 对象在内存中的布局是怎样的?
    Java内存区域详解

以上都是基本的内存分配问题,每个都可以深入下去。
由于jvm垃圾自动回收技术的存在,以上问题都是需要解决的。
我也在学习,大家可以相互探讨共同进步。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏