首页 技术 正文
技术 2022年11月9日
0 收藏 769 点赞 4,894 浏览 611 个字

1.Java程序跨平台运行的原因

主要原因是:各种平台的JVM和字节码文件

Java源程序–具体平台的机器代码文件—被编译器翻译成平台无关的Class文件,又用特定JVM运行字节码文件,JVM在运行的过程中

将字节码指令转换为具体平台的机器指令。JVM运行在用户态,操作系统将JVM看作是一个特殊的软件,JVM启动的时候,OS给其划分

一定的内存供其运行字节码文件。存在基于JVM的其他编程语言的原因:对应特定语言的编译器可以将源码翻译成字节码文件,这个字节码可以被JVM识别并执行。

注意:执行引擎其实就是一系列的方法组成的流程—对应的就是线程,JVM执行字节码指令是基于栈的,所有操作数入栈。

Java的线程是用户态线程,线程状态改变维护都在用户态。

2.Java程序运行时内存区域划分

进行内存区域划分是由谁完成的—JVM完成,它将从操作系统获得内存,按照数据的存储结构模拟实际机器对内存进行划分。

将内存划分为以下几个区域:

  PC:字节码解释器通过PC的值找到下条要执行的字节码指令—线程私有

  虚拟机栈:存储Java方法的局部变量和参数,属于线程私有

  本地方法栈:存储JVM使用到的本地方法相关的局部变量和参数,线程私有

  堆:存储new产生的对象以及数组,是JVM垃圾回收的主要区域,线程共享

  方法区:存储类信息、常量、静态变量等,线程共享

  运行时常量池:存放在执行过程中生成的常量,属于方法区的一部分

Java程序运行时内存划分

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,085
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,560
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,409
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,182
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,819
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,902