问题六:JVM和Linux进程内存模型

问题六:JVM和Linux进程内存模型

XXX.class文件运行在JVM(Java虚拟机)上、底层Linux JVM内存模型。

JVM内存模型、Linux内存模型

JVM本身就是用原生代码(C / C ++)实现的,也就是说一个JVM进程就是一个C语言开发的程序在运行。JVM上可以解释.class字节码文件,在JVM层内存主要划分为:

(1)方法区

指令、Class对象、static成员变量……

(2)heap堆区

new出来的对象和常量池

(3)JVM stack虚拟机栈

函数运行需要分配栈空间,以及函数的局部变量都存储在栈上

当JVM进程运行在Linux系统上,Linux实际上给JVM进程分配的内存空间区域划分有.text段(放指令)、.rodata段(常量段)、.data(初始化数据段)、.bss(未初始化数据段)、heap堆(malloc或者new)、stack(函数运行需要分配栈空间,以及函数的局部变量都存储在栈上)。相当于把JVM方法区的指令最终映射到Linux进程的.text字段上,把数据映射到Linux进程的.data、.bss数据段上,JVM heap映射到Linux进程的heap上,JVM stack映射到Linux进程的stack上。

不管是JVM内存模型还是Linux的内存模型,进程里面的线程只有栈不一样,其他都是线程共享的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值