我这人是个细节怪,需要知道一些东西的细节,不然技术慌。
写了这么久的java代码,我来罗列说明一下一个java程序从按启动按钮之后都发生了什么!
当你按下Java程序的启动按钮后,以下步骤将依次发生:
1. 操作系统内核从磁盘中读取Java程序文件,并分配了相应的资源和内存空间。
2. 操作系统启动JVM虚拟机进程,并将Java程序提交给该进程。这个过程中JVM会分配一定的堆内存和栈内存大小。
3. JVM进行初始化操作,包括检查Java环境变量设置、加载系统类库、设置默认字符编码等操作。同时,该过程中还会创建并启用主线程、垃圾回收线程、Finalizer线程。
4. JVM根据Java类的定义,逐层加载并链接所有依赖的类库和JAR包,并生成可执行代码。在该过程中,JVM也会执行一些基本的优化操作,如代码解析优化、编译优化等。同时也会进行字节码验证、字节码解释等处理。
5. JVM按照程序中main方法所在的类名称,在JAR包中查找并定位到这个类,创建一个新的线程来执行该方法。在执行期间,如果需要创建其他线程来执行业务逻辑,则需要在业务代码中使用Thread API进行创建。
6. 程序开始运行后,JVM会根据需要加载其他的类和库,并调用相应的方法进行处理。在这个过程中,如果发生了无法处理或异常错误,则可能会引发垃圾回收机制。
7. 程序运行期间可能还需要进行一些外部资源或数据的读写操作,例如数据库连接、文件读写等。这些操作需要在业务代码中进行处理,并且需要考虑到资源占用问题和异常处理。
8. 当程序执行完成后,JVM会清理内存空间和其他资源,并将控制权返回给操作系统。在该过程中会涉及到垃圾回收机制的运行,包括如何识别垃圾对象、如何释放垃圾对象所占用的空间等操作。
以上就是一个Java程序重新启动时大致流程,其中涉及到了各种细节与技术实现。由于JVM是一个硬件抽象层,因此在不同的操作系统和硬件平台上可能会有所不同。同时,在应用开发中也需要考虑到性能优化、线程安全问题以及异常处理等方面,才能保证应用的可靠性和高性能。