Java程序是如何结束的? 本帖最后由 qinglo_ 于 2012-11-27 21:52:19 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 紧贴k.function();后面的那个大括号执行完之后应该程序就结束了 java虚拟机 结束程也跟着结束。 想深入了解可能学学java虚拟机。 Lz,JAVA是高级语言,是运行在虚拟机上的,JAVA高级代码---》中间字节码----》虚拟机----》编译---》运行 当执行到main的结束号},java虚拟机就会调用Thread.exit()方法,结束线程 java的代码栈中没有代码了,当然就退出了。 }我当时也答了 面试官对这个回答不满意应该是还有别的 从jvm方向回答也许有可能,不知道还有没有更详细一些的解答 这个问题看似简单 程序执行完了 自然也就结束了 要说出个所以然来还真有点难 当时旁边有一起面试的人说return 他也没怎么表示 期待大神详解啊 我很好奇 lz 面试的什么职位 如果不是比较偏门的开发方向的话,我觉得面试官在装13现实的情况是,不少人对 java collection 集合或者容器类族的 sorted / ordered / thread-safe 都犯含糊 ,相较之下,面试官的问题完全木有意义,属于没事儿抽人或者找抽型 默认调用调用java垃圾处理机制的线程。然后再结束main方法 非守护线程都执行完成了就over了吧。 代码被编译成class文件,其实是一个个的命令符,执行的时候各个命令根据不同的条件顺序的进栈出栈,命令执行完,栈空了,也就结束了。 偶觉得这就是在考java虚拟机如何的运行,虽然很无聊但却很基础的问题。 有可能在考父子进程相关知识,典型的一个虚拟机进程由"java xxx"命令启动,所以它的父进程是shell进程,shell会fork一个子进程出来,通过JNI的JNI_CreateJavaVM函数创建一个java虚拟机并加载主类,调用主类的main方法从一个java程序就跑起来了。虚拟机所有非守护线程退出,这个进程也就结束了,但是进程所占用的资源还在,如果没有父进程去回收它,它就成为了一个僵尸进程,父进程回收了它以后,它才真正的结束,被操作系统回收资源。考这个可以看你对操作系统的理解程度吧 在Unix系统上,有5种方式可以使一个进程正常终止:(1)从main函数返回,相当于等效的调用exit函数(2)调用exit(3)调用_exit或者_Exit(4)最后一个线程从其启动例程返回(5)最后一个线程调用pthread_exit进程终止成为僵尸进程了。jvm运行离不开这些系统调用以及底层库函数,所以原理是相同的,有关内容也可以参考java虚拟机规范 main方法执行完了程序就结束了 可以借助理解c语言中最简单的顺序结构,调用完成方法后就退出程序,道理是一样的,实现是有区别的。具体的深入原理,还是需要了解java虚拟机的原理。实际上,所有的语言原理都遵循顺序,循环,选择这三中模式。 main方法是程序的的入口,先把KK类加载在JVM上,然后生成KK类的对象,通过对象调用方法function(),然后再输出就行了。 有没有一切java比较给力的游戏代码 如何判断数据库中已有此记录? 很简单的问题,帮我解释下,谢谢 java中的输入有异常,高手帮忙看一下 初学JAVA,刚把JAVA SE看了一遍,想做个东西练习下,大家有什么提议呀,谢谢大家参与 【菜鸟问题】捕获了异常后,能不能不要退出程序啊???? 请问java怎样控制鼠标形状? 如何从用例过度到设计类 高手:scjp的如何轻松过? 请给初学Java的Freshman一个建议! 请教正则表达式写法 java swing,设置窗体无边框(title),怎么通过鼠标拖动调整大小
如果不是比较偏门的开发方向的话,我觉得面试官在装13现实的情况是,不少人对 java collection 集合或者容器类族的 sorted / ordered / thread-safe 都犯含糊 ,相较之下,面试官的问题完全木有意义,属于没事儿抽人或者找抽型
然后再结束main方法
,
执行的时候各个命令根据不同的条件顺序的进栈出栈,命令执行完,栈空了,也就结束了。
(1)从main函数返回,相当于等效的调用exit函数
(2)调用exit
(3)调用_exit或者_Exit
(4)最后一个线程从其启动例程返回
(5)最后一个线程调用pthread_exit进程终止成为僵尸进程了。jvm运行离不开这些系统调用以及底层库函数,所以原理是相同的,有关内容也可以参考java虚拟机规范