
jvm虚拟机
文章平均质量分 86
rocky-bull
这个作者很懒,什么都没留下…
展开
-
安卓线程学习四 之 线程优先级和调度
一 问题思考安卓开发,如果想设置线程优先级有两种方法:1 Android sdk也提供一个设置线程优先级的方法2 Thread.java里面提供了设置线程优先级的方法这两个方法有什么区别,应该选择使用哪一个呢?二 线程优先级的原理2.1. android.os.process.java设置线程优先级源码分析/** * Set the priorit...原创 2018-08-07 10:08:51 · 3922 阅读 · 1 评论 -
安卓线程学习三 之 线程状态
一 源码分析在Thread.java类中,有一个枚举类State描述了线程状态机:/** * A thread state. A thread can be in one of the following states: * <ul> * <li>{@link #NEW}<br> * A thread...原创 2018-08-05 23:10:51 · 976 阅读 · 0 评论 -
jdk native源码下载
一 背景java宣称一次编译,到处运行,主要功劳在jvm隔离了系统平台的差异性。jdk代码包括:java 用于提供开发接口c 用于jni调用c++ 汇编 用于适配不同操作系统和芯片平台在windows平台下载jdk安装包,安装成功之后,会在安装目录生成:其中src是部分jdk开源源码,解压以后: 可以看到jdk开源代码部分只包括java代码。开发过程如果需要了解j...原创 2018-07-28 02:27:54 · 1517 阅读 · 1 评论 -
安卓线程学习二 之 java线程启动分析
安卓系统或应用开发,java多线程编程是非常重要也是比较难的一个知识点。掌握线程的实现原理、生命周期,合理的使用线程、线程池对于开发稳定、高效的程序是必须的基础。结合安装系统、应用开发实践,我们先思考下面几个常见的问题:安卓系统基于Linux实现,每一个java线程会对应一个pthread线程。每一个app在启动之后都会启动一个binder线程用于监听消息事件,安卓系统是基于消息驱动。...原创 2018-07-31 00:44:27 · 779 阅读 · 0 评论 -
安卓系统之线程学习-概要
安卓系统或应用开发,java多线程编程是非常重要也是比较难的一个知识点。掌握线程的实现原理、生命周期,合理的使用线程、线程池对于开发稳定、高效的程序是必须的基础。结合安装系统、应用开发实践,我们先思考下面几个常见的问题:安卓系统基于Linux实现,每一个java线程会对应一个pthread线程。每一个app在启动之后都会启动一个binder线程用于监听消息事件,安卓系统是基于消息驱动。...原创 2018-07-31 00:43:32 · 687 阅读 · 0 评论 -
hashmap 线程安全问题分析
1.问题引入开发过程使用了HashMap全局变量作为缓存HashMap<String, String> mCacheMap写(put)mCacheMap是线程R读(get)mCacheMap是线程WHashmap是非线程安全的集合类,在此场景中RW分属于两个不同线程,会存在读写数据不一致性问题。比如W线程正在更新HashMap过程中,R线程同时读取HashMap,由...原创 2018-06-23 23:48:44 · 5981 阅读 · 0 评论 -
ClassLoader 三 Android 类加载
一 前言Android类加载同样遵循jvm虚拟机规范,不同点是class不是被类加载器直接装载,而是先被打包成dex文件,然后交由BaseDexClassLoader来完成类加载。二 分类BaseDexClassLoader 包含两个子类 1. DexClassLoader 2. PathClassLoader下面分别看下对应的源码 :package dalvik.system;import j原创 2017-11-14 17:42:05 · 340 阅读 · 0 评论 -
Classloader 二 自定义类加载器
一 为什么需要自定义类加载器1.假设需要加载的类需要保密,那么java自带的app类加载器就无法完成加载的任务,这个时候就需要通过自定义类加载器先对类文件进行解密,然后再进行加载。2.加载指定路径的类文件。比如类文件放在磁盘的某个文件夹、或者来自网络。下面的例子会展示加载指定磁盘目录下的一个类文件的方法。二 示例自定义一个类加载器MyClassLoader,继承自ClassLoader,重写find原创 2017-11-09 17:25:20 · 360 阅读 · 0 评论 -
Classloader 一 基本概念
一 前言java程序执行流程,以下demo为例:package java;public class JavaClassDemo { public static void main(String[] args) { // TODO Auto-generated method stub String str = new String("demo...原创 2017-11-09 15:04:05 · 265 阅读 · 0 评论 -
jvm虚拟机基本概念
1. JVM 运行时数据区域1 方法区保存类信息、常量、静态变量2 程序计数器虚拟机字节码指令的地址3 java栈描述java方法内存模型,包括局部变量、操作数栈、动态链接等信息。局部变量包括类型:boolean byte char short int long double float、对象引用、方法返回类型。如果线程请求的栈深度大于虚拟机的栈深度,会报错StackOverFlow;如果申请原创 2017-09-30 16:32:30 · 286 阅读 · 0 评论 -
安卓线程学习五 之 HelloWorld app运行时线程资源分析
一 抛出问题一个最普通的 HelloWorld app运行以后,总共会开启多少线程,这些线程分别是什么作用,线程的status是什么?二 分析helloworld app运行以后,打开Android Studio — Tools — Android — Android Device Monitor ,查看Threads信息,如图所示: 总共有14个线程2.1.虚拟机线...原创 2018-08-08 17:54:27 · 2087 阅读 · 0 评论