有句名言,叫做10000小时成为某一个领域的专家。姑且不辩论这句话是否正确,让我们到达10000小时的时候再回头来看吧。

26 Hours.

Java 虚拟机启动的时候加载一个指定的类然后调用该类中的main 方法。分为loading, linking, initialization.

虚拟机启动

第一个指定的class 是以什么方式指定给Java 虚拟机的,这个已经超出了本文的范围。一般来说,在使用命令行的host 环境中,该class 的名字是以命令行参数的形式传递给虚拟机的。

加载指定的Class

初始化操作试图执行main 方法,但是包含该方法的类还没有载入。因此虚拟机使用class loader 试图载入该class, 如果该操作失败,将会抛出异常。更详细的表述下次再具体展开。

Link

Link 包含调用严重,准备和优化。具体如何连接下次再具体展开。

只有当初始化结束以后,main 方法才允许被执行。

显然,如果该类有父类,那么该父类也必须先被初始化。

Invoke main

最终,main 方法被调用。main 方法必须是public, static, void,然后接受一个String[] 为参数。

Finalization of Class Instances

class 对象有一个protected 的方法叫做 finalize. 在GC 回收存储之前,Java 虚拟机将会调用该对象的终结器。

终结器中可以用来回收一些无法被自动内存管理释放的资源。

Program Exit

程序终止一切活动并退出的两个条件:

1 所有非守护线程都终止了。

2 某些线程合法的调用了exit 方法。

Java Hour 26 Execution的更多相关文章

  1. java基础(26):Thread、线程创建、线程池

    1. 多线程 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念. 进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行,即变成一个进程,进程是处于运行过程中的程序,并 ...

  2. Java(26)集合一Collection

    来源:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15228419.html 博客主页:https://www.cnblogs.com/testero ...

  3. Java [leetcode 26]Remove Duplicates from Sorted Array

    题目描述: Given a sorted array, remove the duplicates in place such that each element appear only once a ...

  4. java 多线程 26 : 线程池

    使用线程池与不使用线程池的差别 先来看一下使用线程池与不适应线程池的差别,第一段代码是使用线程池的: public static void main(String[] args) { long sta ...

  5. java基础26 线程的通讯;wait()、notify()、notifyAll()等方法

    线程的通讯:一个线程完成了自己的任务时,要通知另一个线程去完成另一个任务 1.1.方法 wait():等待.如果线程执行到了wait()方法,那么该线程会进入等待状态,等待状态下的线程必须要被其他线程 ...

  6. 深入浅出 Java Concurrency (26): 并发容器 part 11 Exchanger[转]

    可以在对中对元素进行配对和交换的线程的同步点.每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象.Exchanger 可能被视为 Synchro ...

  7. java进阶(26)--ForEach

    JDK5.0后新特性 一.普通for循环

  8. 学习java 7.26

    学习内容: 进度条是图形界面中广浅个较大的文件时,操作系统会显示一个进度条,用于标识复制操作完成的比例:当启动Eclipse等程序时,因为需要加载较多的资源,故而启动速度较慢,程序也会在启动过程中显示 ...

  9. Java小技巧输出26个英文字母

    相信有的童鞋写到过与字母有关的小东西,是否有写过全部的字母呢?26个这么多字母,一个个打会疯掉.所有咱们可以用一个小技巧使用for循环帮我们把26个字母自动搞出来,大家来瞅一眼把! 使用Java遍历2 ...

随机推荐

  1. Unity 游戏资源ktx转换png

    Unity 开发的模型贴图都是.ktx格式的,提取出来的资源,其中的ktx资源,用PVRTexToolGUI.exe可以打开查看,可以发现都是上下颠倒,且被拉伸 直接转为png格式的批处理脚本为: @ ...

  2. Source Insight 基本使用(1)-使用Source Insight查看Android Framework 源码

    一.下载framework源码: google已经把framework源码托管在了gitHub上: https://github.com/android/platform_frameworks_bas ...

  3. metinfo首页内容简介

    http://www.hlbaozhuangji.cn/manage/content/other_info.php?anyid=31&lang=cn 首页内容简介: select * from ...

  4. css 伪类::after ::beftor 的使用方式

    注释:对于 IE8 及更早版本中的 :before,必须声明 . ::before和::after这两个主要用来给元素的前面或后面插入内容,这两个常用"content"配合使用,见 ...

  5. 抓包工具 wireshark

    http://fangxin.blog.51cto.com/1125131/735178

  6. Antenna Placement(匈牙利算法 ,最少路径覆盖)

    Antenna Placement Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6991   Accepted: 3466 ...

  7. fastjson 的使用

    json解析:[2]fastjson 使用 http://jingyan.baidu.com/article/c74d6000672e450f6b595d53.html 利用阿里的fastjson包对 ...

  8. js 中数组或者对象的深拷贝和浅拷贝

    浅拷贝 : 就是两个js 对象指向同一块内存地址,所以当obj1 ,obj2指向obj3的时候,一旦其中一个改变,其他的便会改变! 深拷贝:就是重新复制一块内存,这样就不会互相影响. 有些时候我们定义 ...

  9. Linux下列格式化工具 - column

    [root@localhost ~]# mount/dev/sda2 on / type ext4 (rw)proc on /proc type proc (rw)sysfs on /sys type ...

  10. linux下查看文件夹的大小

    du -sh du -sh dir_name/ du -sm * | sort -n //统计当前目录大小 并安大小排序 转自:http://www.jb51.net/LINUXjishu/77450 ...