个人的疑问蛮多的,不知道脑子每天在干嘛,天天乱想!!都怪自己无知呀!
俺的新座右铭:好好学习,天天向上。。。
问题整理如下:
eclipse 启动,同时启动的虚拟机吗?
jvm什么时候启动的,什么时候关闭的?
eclipse的配置文件eclipse.ini里面的参数是用来启动虚拟机的吗?
那么在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实例的。
在EclipseJDT里写Java程序,如果实用debug或者run功能,那么Eclipse JDT会另外启动一个JVM进程来执行指定的Java程序。项目配置里debug/run里的arguments就是用来配置这个另外的JVM进程用的。
作者:RednaxelaFX
链接:https://www.zhihu.com/question/45503863/answer/99074589
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
评论区回复
一般情况:一个Java程序需要一个JVM实例去运行。
跑一个Eclipse需要一个对应的JVM实例;同时跑两个就会同时有2个JVM实例。
我用 jps 命令查看发现只有一个 JVM 实例. 那 IDEA 是通过启动多个线程来实现多个多 project 的吗? 开一个 project 起一个线程, 关一个 project 是终止一个线程.
通过 Activity Monitor 观察 IDEA 的内存占用情况, 发现每打开一个 project, 内存占用都会升高; 然后如果关掉一个 project, 内存占用确不会降低. 这看起来很像内存泄露…关了一个线程, 这个线程占用的资源不是都会释放掉吗?