zuoshuaifs 2011-12-26 10:51
浏览 388
已采纳

jvm实例,tomcat容器,spring容器,在内存中的关系

1.一个java项目对应一个jvm 吗?
2.tomcat里面加载多个java项目 ,是不是用了一个jvm?
3.java项目中的spring容器,部署到tomcat容器,启动tomcat以后的jvm实例 ,在内存中是怎么一个包含关系?

如果说 一个程序启动一个jvm实例,一个项目能保证在一个jvm里面吗
另外 如果一个tomcat加载n各项目 他们之间彼此调用(比如通过http访问),是不是跨jvm?
谢谢

  • 写回答

2条回答 默认 最新

  • lisino 2011-12-26 22:11
    关注

    应用跟线程没什么关系,线程是个计算执行的概念,而应用上下文占用的是内存。你如果打印线程名称,就能看到应用线程是动态分配的,线程1可以在应用1出现,也可以在应用2出现。其实Tomcat是JVM的main进程启动的一个Socket服务,同时会加载应用的上下文环境、初始化执行线程池

    项目之间的调用看你用什么方式,如果通过http访问,就相当于跨jvm;项目虽然都在一个虚拟机里,但属于不同的类加载器环境,除非定义SystemClassloader级别的静态变量,没想到有其他办法能引用调用,呵呵。
    tomcat线程之间不可以相互调用,除非是自定义的多线程。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 51寻迹小车定点寻迹
  • ¥15 谁能帮我看看这拒稿理由啥意思啊阿啊
  • ¥15 关于vue2中methods使用call修改this指向的问题
  • ¥15 idea自动补全键位冲突
  • ¥15 请教一下写代码,代码好难
  • ¥15 iis10中如何阻止别人网站重定向到我的网站
  • ¥15 滑块验证码移动速度不一致问题
  • ¥15 Utunbu中vscode下cern root工作台中写的程序root的头文件无法包含
  • ¥15 麒麟V10桌面版SP1如何配置bonding
  • ¥15 Marscode IDE 如何预览新建的 HTML 文件