Java摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想;它提供了一种相对安全的内存管理和访问机制,避免了绝大部分的内存泄露和指针越界问题;它实现了热点代码检测和运行时编译及优化,这使得java应用能随着运行时间的增加而获得更高的性能
JDK:java程序设计语言、java虚拟机、javaAPI类库
JavaAPI类库中的javaSEAPI子集和java虚拟机这两部分统称为JRE
Java技术关注的重点业务领域划分:1
javaCard:支持一些java小程序运行在小内存设备上的平台
JavaME:支持java程序运行在移动终端上的平台
JavaSE:支持面向桌面级应用的java平台
JavaEE:支持使用多层架构的企业应用
运行时数据区:1
程序计数器:一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器
Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的
此内存区域是唯一一个在java虚拟机规范中没有规定任何outofmemoryerror情况的区域
Java虚拟机栈:是线程私有的
它的生命周期与线程相同
虚拟机描述的是java方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧用于存储局部变量表、操作栈、动态链接、方法出口等信息
每一个方法被调用直至执行完成的过程,就对应于一个栈帧在虚拟机栈中从入栈到出栈的过程
如果线程请求的栈深度大于虚拟机所允许的深度将抛出stackoverflowerror异常;如果虚拟机可以动态扩展,当扩展时无法申请到足够的内存时会抛出outofmemoryerror异常3
本地方法栈:与虚拟机栈所发挥的作用是非常相似的,其区别不过是虚拟机栈为虚拟机执行java方法服务,而本地方法栈则是为虚拟机使用到的native方法服务
Java堆:java堆是被所有线程共享的一