开发者社区> 问答> 正文

java 程序运行过程中如何进行内存分配的

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

展开
收起
蛮大人123 2016-02-25 14:05:28 2755 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    •内存分配首先要知道内存的数据区域有哪些?
    虚拟机栈,程序计数器,堆,方法区,本地方法区。

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

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

    2019-07-17 18:47:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载