美文网首页
eclipse 启动,同时启动的虚拟机吗?

eclipse 启动,同时启动的虚拟机吗?

作者: greensure | 来源:发表于2019-06-21 09:02 被阅读0次

    Questions

    1、eclipse 启动,同时启动的虚拟机吗?
    2、jvm什么时候启动的,什么时候关闭的?
    3、eclipse的配置文件eclipse.ini里面的参数是用来启动虚拟机的吗?
    4、那么在eclipse里面调试程序使用到参树和eclipse.ini有什么区别?

    转载
    Eclipse是一个用Java实现的IDE。它的上层逻辑都是用Java写的,GUI库底层用了SWT有一部分native组件。

    在Windows上跑Eclipse的话,那个eclipse.exe其实只是一个“启动程序”(launcher),通过JNI来启动Eclipse真正的Java本体。

    Equinox Launcher
    所以,当eclipse.ini通过JNI的API找到了合适的JVM,准备进入Eclipse的Java本体的时候,JVM就启动了。而在退出Eclipse的时候,这个JVM才会退出。

    eclipse.ini 配置文件就是用来配置这个运行Eclipse用的JVM实例的。

    在Eclipse JDT里写Java程序,如果实用debug或者run功能,那么Eclipse JDT会另外启动一个JVM进程来执行指定的Java程序。项目配置里debug/run里的arguments就是用来配置这个另外的JVM进程用的。

    评论区回复:
    一般情况:一个Java程序需要一个JVM实例去运行。
    跑一个Eclipse需要一个对应的JVM实例;同时跑两个就会同时有2个JVM实例。


    我用 jps 命令查看发现只有一个 JVM 实例. 那 IDEA 是通过启动多个线程来实现多个多 project 的吗? 开一个 project 起一个线程, 关一个 project 是终止一个线程.
    通过 Activity Monitor 观察 IDEA 的内存占用情况, 发现每打开一个 project, 内存占用都会升高; 然后如果关掉一个 project, 内存占用确不会降低. 这看起来很像内存泄露...关了一个线程, 这个线程占用的资源不是都会释放掉吗?
    答:
    JVM有自己的内存管理
    从操作系统申请的内存不是马上就还回去,万一用到了呢。。提高性能


    JVM自身是不关心像eclipse.ini这样的配置文件的。Eclipse的launcher会读入这个配置文件,并把里面的内容通过JNI的API来作为参数传给创建JVM的函数。

    eclipse只是个ide工具 不影响jvm的启动 web容器启动后会启动虚拟机
    这得看您是如何启动Java。在Eclipse JDT里用内建run/debug的话,Eclipse就是负责把配置好的启动参数传下去。
    而如果是别的方式启动Java(例如别的Eclipse插件可能会调用个Tomcat/JBoss脚本之类),那就不是同一回事。


    其实你可以看下,在eclipse目录里有个ini文件,里面就是启动eclipse的JVM参数。
    如果你强退eclipse,他会告诉你我们JVM出什么错了。然后列出所有JVM的参数。
    更粗暴的还可以直接visualvm去连系统里的eclipse,是可以连接的。

    相关文章

      网友评论

          本文标题:eclipse 启动,同时启动的虚拟机吗?

          本文链接:https://www.haomeiwen.com/subject/yfeeqctx.html