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

个人的疑问蛮多的,不知道脑子每天在干嘛,天天乱想!!都怪自己无知呀! 

俺的新座右铭:好好学习,天天向上。。。 

问题整理如下:
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, 内存占用确不会降低. 这看起来很像内存泄露…关了一个线程, 这个线程占用的资源不是都会释放掉吗?

答:
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,是可以连接的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值