JVM

发布时间 2023-08-04 17:03:37作者: hongyc77

一、解决什么问题

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.

四、如何使用这些组件