SpringBoot打包成jar之后在Linux执行,然后删除jar,程序应存在,可请求,为什么?

xinxin6193
  • 47

SpringBoot打包成jar之后在Linux执行,然后删除jar,程序应存在,可请求,为什么?
如题的提问,这是最近发现的问题,不知道为什么,查看源码并没有发现,希望得到解释,谢谢。

回复
阅读 3.7k
2 个回答

因为你删除的时候,jar包里的需要用到的类都已经加载进jvm了,这时候程序继续运行已经不需要这个jar包了
如果之后某些请求使用到了尚未加载的类,就会ClassNotFoundException了

这跟SpringBoot jar没有关系。

在冯·诺依曼定义的计算机模型中,任何程序都需要加载到内存才能与 CPU 进行交流。

Java程序就是将.class文件加载至内存。

之后你删除jar,并不会影响已经在运行的程序。因为类文件已经被加载到JVM了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏