零碎知识。

 

 Android应用程序的入口函数是ActivityThread.main(),该函数不仅创建了ActivityThread实例以及消息循环机构,而且创建了ApplicationThread实例,通过此实例向ActivityManager Service(AMS)提供IApplicationThread接口,AMS正是通过该接口调度和管理Activity。  

   ActivityThread通过attachApplication()把自己的ApplicationThread实例告知AMS

AMS根据thread信息更新进程记录(ProcessRecord)并调用threadbindApplication()进行初始化工作并创建ApplicationContextApplication实例,然后安装package里声明的所有contentProvider


Java是一种动态链接的语言,常量池的作用非常重要,常量池中除了包含代码中所定义的各种基本类型(如int、long等等)和对象型(如String及数组)的常量值外,还包含一些以文本形式出现的符号引用,比如:

类和接口的全限定名;

字段的名称和描述符;

方法的名称和描述符。

在C语言中,如果一个程序要调用其它库中的函数,在链接时,该函数在库中的位置(即相对于库文件开头的偏移量)会被写在程序中,在运行时,直接去这个地址调用函数;

而在Java语言中不是这样,一切都是动态的。编译时,如果发现对其它类方法的调用或者对其它类字段的引用的语句,记录进class文件中的只能是一个文本形式的符号引用,在连接过程中,完成对符号引用的翻译,翻译成直接引用,也就是目标所在的地址,虚拟机根据这个文本信息去查找对应的方法或字段。

所以,与Java语言中的所谓“常量”不同,class文件中的“常量”内容很非富,这些常量集中在class中的一个区域存放,一个紧接着一个,这里就称为“常量池”。


runFinalization
public static void runFinalization()

运行处于挂起终止状态的所有对象的终止方法。 
调用该方法说明 Java 虚拟机做了一些努力运行已被丢弃对象的 finalize 方法,但是这些对象的 finalize 方法至今尚未运行。当控制权从方法调用中返回时,Java 虚拟机已经尽最大努力去完成所有未执行的终止方法。 

调用 System.runFinalization() 实际上等效于调用: 

 Runtime.getRuntime().runFinalization()

gc
public static void gc()

运行垃圾回收器。 
调用 gc 方法暗示着 Java 虚拟机做了一些努力来回收未用对象,以便能够快速地重用这些对象当前占用的内存。当控制权从方法调用中返回时,虚拟机已经尽最大努力从所有丢弃的对象中回收了空间。 

调用 System.gc() 实际上等效于调用: 

 Runtime.getRuntime().gc()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值