前几天收到公司的电话面试,问到了内存分配的问题。本人一直对这样的问题不太关注,平时只注重具体的实现,所以回答的很不好。这会严重影响面试官对我的看法,面试官会认为我的基础很差,实际上也确实如此。其实之前看马士兵老师的java视频,其中讲到了这方面的内容,现在总结一下,希望下次面试时能表现的好一点。
程序执行过程:(以java为例)
exe文件执行的时候直接放到操作系统执行class文件执行要放到虚拟机里面
比如,硬盘中有一个小程序,运行时load(装载)到内存区域。操作系统找到程序的起点(java里是main方法)执行,一般在执行过程中把内存分成四部分。不同的操作系统不同,但基础的是这四部分:
code segment代码区
data segment数据区
stack栈
heap堆
堆是用来动态申请内存,可以简单理解为new出来的东西都放在堆中
栈存放局部变量
数据区存放静态变量、字符串常量
代码区存放代码
水平有限,希望各位大神能补充或纠错。
(主要内容来自马士兵java视频)