SpringBoot打包成jar之后在Linux执行,然后删除jar,程序应存在,可请求,为什么?
如题的提问,这是最近发现的问题,不知道为什么,查看源码并没有发现,希望得到解释,谢谢。
SpringBoot打包成jar之后在Linux执行,然后删除jar,程序应存在,可请求,为什么?
如题的提问,这是最近发现的问题,不知道为什么,查看源码并没有发现,希望得到解释,谢谢。
这跟SpringBoot jar没有关系。
在冯·诺依曼定义的计算机模型中,任何程序都需要加载到内存才能与 CPU 进行交流。
Java程序就是将.class文件加载至内存。
之后你删除jar,并不会影响已经在运行的程序。因为类文件已经被加载到JVM了。
15 回答8.4k 阅读
8 回答6.2k 阅读
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
因为你删除的时候,jar包里的需要用到的类都已经加载进jvm了,这时候程序继续运行已经不需要这个jar包了
如果之后某些请求使用到了尚未加载的类,就会ClassNotFoundException了