2026/4/7 12:52:16
网站建设
项目流程
网站建设设计猫和老鼠,软件开发公司流程,天津平台网站建设报价,福永网站推广Day06
java中的运行机制
1.java的程序运行的过程是怎么样的#xff1f;
.java文件-编译-.class字节码文件-运行#xff08;在虚拟机里运行#xff09;
2.java不是直接运行在操作系统里面的#xff0c;是运行在虚拟机里面的
3.虚拟机的好处#xff1a;利用虚拟…Day06java中的运行机制1.java的程序运行的过程是怎么样的.java文件-编译-.class字节码文件-运行在虚拟机里运行2.java不是直接运行在操作系统里面的是运行在虚拟机里面的3.虚拟机的好处利用虚拟机可以实现跨平台4.为什么要跨平台写一套代码可以在任意的操作系统中运行。内存内存软件在运行时用来临时存储数据的把数据保存到内存中从内存的对应位置把数据提取出来内存地址内存中每一个小格子的编号内存地址的规则32位的操作系统内存地址以32位的二进制表示-----共2**32次方个内存地址最大支持内存4GB64位的操作系统内存地址以64位的二进制表示-----共2**64次方个内存地址最大支持内存17179TB64位二进制转化为16位16进制作用快速的管理内存空间java中的内存分配1.栈内存每个线程都有自己独立的栈方法被调用进栈执行执行完毕出栈2.堆内存所有线程共享存储对象数组字符串常量池new关键词一定使用堆内存3.方法区方法存储不允许要方法进栈运行JDK7永久代实现JDK8元空间实现从虚拟机内部移到本地内存。存储字节码常量静态变量。运行时编译的字节码class文件会加载到方法区临时存储4.本地方法栈调用本地Native方法5.程序计数器每个线程独立记录当前线程执行的字节码指令地址行号publicclassMemory{publicstaticvoidmain(String[]args){inta10;intb20;intcab;System.out.println(c);}}基本数据类型变量里面记录的是真实的数据传递也是真实的数据publicclassMemory{publicstaticvoidmain(String[]args){inta10;intb20;System.out.println(交换前的a,b);change(a,b)System.out.println(c);}publicstaticvoidchange(inta,intb){inttempa;ab;btemp;}}//a和b只是把值传递给change方法所以a和b没有改变。数组的内存分配栈内存堆内存数组new关键字一般隐藏方法区publicclassMemory{publicstaticvoidmain(String[]args){int[]arr{1,2,3};System.out.ptintln(arr);//打印arr的内存地址}}//将堆内存中数组的地址赋值给栈内存中的arr引用数据类型存储的是内存地址数组在方法中的传递数组中的传递是地址传递publicclassMemory{publicstaticvoidmain(String[]args){int[]arr{1,2,3};change(arr);}publicstaticvoidchange(int[]arr){inttemparr[0];arr[0]arr[2];arr[2]temp;}}总结1.java虚拟机把内存分成了几个部分栈堆方法区本地方法栈程序计数器。2.栈堆方法区的作用栈方法堆new关键字方法区字节码文件3.基本数据类型在内存中的特点记录的是真实的数据传递的也是真实的数据4.引用数据里类型在内存中的特点记录的是地址值传递的也是地址值。