Java语言是跨平台的,jvm不是跨平台的。
虚拟机(Virture Machine)指通过软件的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。
Java的源代码经过编译后生成的不是特定CPU使用的本地代码,而是名为字节代码的程序。直接代码的运行环境就叫做java虚拟机(JVM),边转换边运行。
java中的内存分配:java程序在运行时,需要在内存中的分配空间。
为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
1.栈:
存储局部变量(加载的变量、方法)
结构:先进后出
特点:栈内存的数据用完(脱离数据域)就释放掉。(堆内存的数据可能要使用多次。)
2.堆:
存储new出来的东西(里面含有该new类的成员变量、静态标记、方法标记)
特点:每一个new出来的东西都有地址值;每个变量都有默认值:
byte,short,int,long 0
float,double 0.0
char \u000
boolean false
引用类型 null
使用完毕就变成了垃圾,但是并没有立即回收,会在垃圾回收器空闲时候回收。
C++中用析构函数来回收释放空间。
栈内存的两个引用指向同一个堆内存空间,无论是它们谁的操作,都是针对同一个地方。
3.方法区:
class类区(包括类的成员变量和成员方法)、静态区(static)、常量池
4.本地方法区:
和系统相关
5.寄存器:
CPU使用