Java杂谈(十一)--JVM

解决方案 »

  1.   

    Ant_Yan 速度还真快,实在是佩服你
      

  2.   

    谢谢Ant_Yan的提醒,珍惜这大学的美好时光
      

  3.   


    其实那些个框架啥的有什么好讲
    jvm、jmm、classloader、languagespecific才是正道
      

  4.   

    “注意这个时候守护线程并未退出,很可能还要继续完成它的本职工作之后才会结束,但虚拟机的生命周期已经提前于它结束了”是这样的吗?虽然说java的线程实现也是靠操作系统。
    但是线程变为守护线程仅仅是改了个属性,所以守护线程就是线程,而任何线程都有其父线程就是启动它的那个程序所在线程。jvm启动后应该是个进程,所有java线程都属于这个进程,当只剩守护线程的时候我觉得jvm应该是逐个结束这些守护线程,都结束以后才退出。
    否则,jvm先退出了还剩几个守护线程在那自己结束好像不太可能吧?因为其main memory已经没了、其他资源也都没了、也不属于任何进程。
      

  5.   

    7楼的朋友质疑得很有道理,笔者虽然不能完全解释清楚,但官方文档有这么一句原话:“The Java virtual machine exits when all nondaemon threads have terminated ……”按照这句话的意思只要所有的非daemon线程终止虚拟机就会exit,那么daemon仍然可以做自己的事情,至于你说的Main memory的话,其实释放资源全都由GC这个daemon Thread来作,它从头到位管理着JVM的Heap区,所以JVM实例退出,但Heap区仍然被GC线程所操作着,很正常的概念
      

  6.   

    try {
                FileInputStream fin = new FileInputStream(TestClass.class.getResource("TestClass.class").getFile());
                DataInputStream din = new DataInputStream(fin);
                System.out.println(Integer.toHexString(din.readInt()));
            } catch (Exception e) {
                e.printStackTrace();
            }