jvm 一点学习

 首先,提问:c++与java区别在哪? 从底层看,c++编译生成汇编代码,与相关硬件平台有关系。而java编译生成的class,即字节码。运行在jvm虚拟机之上,被jvm所识别。jvm提供一种抽象,一种系统的仿真。一种隔离。
注意:jvm只提供一个进程的仿真。
静态库与动态库的区别:.a 与.so ,.a在编译,连接时加载。而.so在运行时加载,当一个进程运行时出错,或者没有跑起来,有必要查看它需要的.so是否存在。


linux内核调试打印等级:读写/proc/sys/kernel/printk 文件设置当前日志打印等级。
echo 8 > /proc/sys/kernel/printk
strace 显示系统所有的调用信息。

init进程 读取init.rc 启动servicemanager作为binder的守护进程。
还会启动Zygote孵化进程,调用的是app_main.cpp中的main()方法,继续调用androidRuntime.cpp,在androidRuntim类的start()方法中启动虚拟机,注册一些JNI调用。

通过JNI调用ZygoteInit.java孵化器的初始化 ,在ZygoteInit的main()方法中,创建本地soctet通讯.
又通过调用startSystemServer 创建子进程,在子进程中
调用 RuntimeInit.zygoteInit 做本地初始化。

 又调用systemserver.java,在systemserver.java的main()中包含init1()、JNI调用android_server_SystemServer_init1 调用system_init.cpp 做了一些系统初始化工作。
然后runtime->callStatic("com/android/server/SystemServer", "init2")
和init2() 调用Thread thr = new ServerThread();
              thr.start(); 线程调用进入其start中 Looper.prepare();之后添加系统远程服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值