java 程序运行过程中如何进行内存分配的或者介绍下内存分配的过程,请详细描述,谈谈你的理解!
我第一时间想到的是堆栈相关的知识点考察,所以面试的过程中通过一个例子说明了一下,很简短的说完了,感觉面试官不太满意,各位如果遇到类似的问题,该如何回答才能得到面试官加分!
Java 内存区域详解有没有结合这个回答的必要。
•内存分配首先要知道内存的数据区域有哪些?
虚拟机栈,程序计数器,堆,方法区,本地方法区。
•知道了内存分配主要在堆上进行后,由于垃圾回收机制的存在,具体又是怎么分配的?
堆分为新生代,老年代,永久代。
对象分配主要在新生代中的Eden区域中,如果经过多次GC对象还存活,那么对象将进入老年代。如果启动了本地线程分配缓冲,则按线程优先在TLAB中分配。大型对象直接分配到老年代。
•为什么大型对象直接分配到老年代?
新生代的垃圾回收机制采用复制算法(复制算法的问题)。
•空间分配担保是怎么回事?
在新生代的对象有可能提前进入老年代。
•对象在内存中的布局是怎样的?
Java内存区域详解
以上都是基本的内存分配问题,每个都可以深入下去。
由于jvm垃圾自动回收技术的存在,以上问题都是需要解决的。
我也在学习,大家可以相互探讨共同进步。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。