一、解决什么问题
1.解决Java跨平台问题的
2.解决Java如何让计算机运行的
3.解决内存的分配释放,如垃圾回收gc
4.安全性,如字节码验证和安全沙箱
5.异常处理
6.多线程
7.动态加载,即动态的加载和卸载代码,这样比较灵活和可扩展,如即时编译器JIT
二、如何解决的
1.跨平台?
方法:通过不同平台使用不同的JVM
问题:JVM底层是如何实现跨平台的(即不同平台哪里不一样,实质上考虑的是操作系统是在哪几个方面不一样)?
-
二进制格式:不同操作系统上的JVM使用不同的二进制格式。例如,Windows上的JVM使用PE(Portable Executable)格式,而Linux上的JVM使用ELF(Executable and Linkable Format)格式。
-
内存管理:不同操作系统上的JVM可能使用不同的内存管理机制。例如,Windows上的JVM使用虚拟内存管理,而Linux上的JVM使用分页机制。
-
线程调度:不同操作系统上的JVM可能使用不同的线程调度算法。例如,Windows上的JVM使用抢占式调度算法,而Linux上的JVM使用时间片轮转调度算法。
-
文件系统:不同操作系统上的JVM可能使用不同的文件系统接口。例如,Windows上的JVM使用Win32 API,而Linux上的JVM使用POSIX API。
-
网络通信:不同操作系统上的JVM可能使用不同的网络通信接口。例如,Windows上的JVM使用Winsock API,而Linux上的JVM使用Socket API。
2.如何让Java在计算机上运行的?
方法:通过什么组件让其变成二进制机器码
3.如何实现内存管理的
三、有哪些组件
1.程序计数器
a.解决什么问题?
b.如何解决问题的?
2.堆
3.
四、如何使用这些组件
标签:操作系统,Windows,不同,使用,JVM,Linux From: https://www.cnblogs.com/hyc492/p/17606235.html