都能看得懂的Java虚拟机内存模型
样的java代码在不同平台生成的机器码肯定是不一样的,因为不同的操作系统底层的硬件指令集是不同的。 同一个java代码在windows上生成的机器码可能是0101.......,在linux上生成的可能是1100......,那么这是怎么实现的呢? 不知道同学们还记不记得,在下载jdk的时候,我们在oracle官网,基于不同的操作系统或者位数版本要下载不同的jdk版本,也就是说针对不同的操作系统,jdk虚拟机有不同的实现。 那么 虚拟机 又是什么东西呢,如图是从软件层面屏蔽不同操作系统在底层硬件与指令上的区别,也就是跨平台的由来。
说到这里同学们可能还是有点不太明白,说的还是太宏观 起栈大家都不会陌生,数据结构中就有学,这里线程栈中存储数据的部分使用的就是栈, 先进后出 。
大家都知道每个方法都有自己的 局部变量 ,比如上图中main方法中的math,compute方法中的a b c,那么java虚拟机为了区分不同方法中局部变量作用域范围的内存区域,每个方法在运行的时候都会分配一块独立的 栈帧 内存区域,我们试着按上图中的程序来简单画一下代码执行的内存活动。 (编辑:吉安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |