您的位置:首页 > 编程语言 > Java开发

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

2017-08-12 11:43 162 查看
个人的疑问蛮多的,不知道脑子每天在干嘛,天天乱想!!都怪自己无知呀!

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

问题整理如下:

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,是可以连接的。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: