Java
泼墨成空
从零开始,每天进步一点点。
展开
-
Android中获取各种服务是哪里来的
当app第一次加载时就开始注册了那些服务,具体来说就是在应用创建ContextImpl实例的时候调用了SystemServiceRegistry类来进行注册,其注册的服务(就是具体的相关的服务的实例)保存在HashMap的对象SYSTEM_SERVICE_FETCHERS中: private static final HashMap> SYSTEM_SERVICE_FETCHERS原创 2016-03-30 12:26:33 · 1791 阅读 · 0 评论 -
基于栈虚拟机和基于寄存器虚拟机的比较
基于寄存器的虚拟机和基于栈的虚拟机有什么不同?原创 2016-03-16 14:04:34 · 9544 阅读 · 2 评论 -
JVM之类加载机制
在上一篇文章中我们了解了Class文件存储格式的具体细节,在Class文件中描述的各种信息,最终都要加载到虚拟机中之后才能运行和使用。而虚拟机如何加载这些Class文件?Class文件中的信息进入到虚拟机后会发生什么变化?这些都是本文所需要解决的问题! 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化最终形成了可以被虚拟机直接使用的Java类型,这就原创 2016-03-26 19:55:28 · 270 阅读 · 0 评论 -
JVM之类文件结构
实现语言无关性的基础仍然是虚拟机和字节码存储格式。Java虚拟机不和包括Java在内的任何语言绑定,它至于“Class”文件这种特定的二进制文件格式所关联,Class文件中包含了Java虚拟机指令集和符号表以及若干其它辅助信息。 Java语言中的各种变量、关键字和运算符号的语义最终都是有多条字节码指令组合而成,因此字节码命令所能提供的语义描述能力肯定会比Java语言本身更加强大。原创 2016-03-22 21:35:57 · 1574 阅读 · 0 评论 -
从init.rc说起
1 简述Android init.rc文件由系统第一个启动的init程序解析,此文件由语句组成,主要包含了四种类型的语句:Action,Commands,Services,Options.在init.rc文件中一条语句通常是占据一行.单词之间是通过空格符来相隔的.如果需要在单词内使用空格,那么得使用转义字符"\",如果在一行的末尾有一个反斜杠,那么是换行折叠符号,应该和下一行合并成一起来处转载 2016-03-22 11:12:05 · 264 阅读 · 0 评论 -
JVM之垃圾收集器与分配策略
通过以上JVM两篇文章的介绍,我们大致了解了Java的内存模型以及对象的存储和分配,本文在基于以上知识开始讲解内存的回收,本文尝试解决以下的几个问题: (1)哪些内存需要回收? (2)什么时候进行内存回收? (3)如何回收内存? 上篇文章文章我们已经讲解了Java内存运行时内存区域的各个部分,其中程序计数器、虚拟机栈和本地方法栈三个区域随线程而生随线程而灭;栈中的栈帧随着方法的原创 2016-03-20 22:37:12 · 418 阅读 · 0 评论 -
JVM之内存区域分配
JVM的内存模型,对象的分配原创 2016-03-20 17:06:21 · 2781 阅读 · 2 评论 -
JVM之Java程序与内存映射
什么是JVM 首先看下一个Java程序是如何在机器上执行的: Java源程序(.java文件)-->Java编译器(如Eclipse) -->字节码(.class文件)-->JVM编译器--> 装配 -->机器码 --> 经过系统总线 -->微处理器-->逻辑门 -->电路 -->设备硬件.原创 2016-03-19 21:34:09 · 1074 阅读 · 0 评论 -
Java之问(一)
如何强制执行垃圾回收? (1)首先,垃圾回收是JVM自动处理的,我们不能强制致敬,尽管我们可以调用System.gc()。 (2)JVM不能保证GC能够直接开始回收。 (3)每一个class都从Object基础了finalize()方法。 (4)当垃圾回收器觉得应用中没有更多的引用对象存在时就会调用finalize()。因此我们手动调用finalize()并没有什么多大作用原创 2016-03-20 11:35:50 · 294 阅读 · 0 评论 -
Java到底是值传递还是引用传递
在Java中,方法的参数传递永远是值传递,不存在引用传递。 实际上,如果一个方法的参数是一个对象,那么当传递这个对象的时候实际上是传递的一个对象的地址过来,而不是传递的一个引用(变量)更不是对象本身,所谓引用变量就是我们 A a = new A(),此a就是一个引用变量,它的值就是一个指向A对象的地址。如果我们把a作为某一个方法的参数传递过去,那么此时传递的仅仅是这个引用a的值(对象的地址)原创 2016-03-18 23:39:53 · 280 阅读 · 0 评论 -
finally会执行吗
如下代码,finally里的代码是否会执行?public class MainQueue { public static void main(String args[]) { System.out.println(MainQueue.test()); } public static int test() { try { return 0; } finally {原创 2016-03-18 23:11:54 · 342 阅读 · 0 评论 -
什么是字符串(String)的不变性?
Strnig的不变性是指什么原创 2016-03-07 14:39:12 · 5049 阅读 · 1 评论 -
ThreadLocal理解与使用
在看FrameWork源码时,在ActivityThread类中有一个ThreadLocal变量,是这么定义的:static final ThreadLocal sThreadLocal = new ThreadLocal(); 再加之,项目中和其它插件源码这个ThreadLocal出现的频率很高,所以决定,对他好好研究一番。 ThreadLocal可以理解为主要解决多原创 2015-09-01 13:12:47 · 1838 阅读 · 0 评论 -
深入理解Java的接口和抽象类(转)
本文转自:博客园--海子对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲: 一.抽象类 二.接口 三.抽象类和接口的区别 若有不正转载 2015-09-29 11:14:39 · 332 阅读 · 0 评论 -
Java动态代理的实现
Java动态代理的实现,Java动态代理的作用?原创 2015-12-03 11:24:44 · 484 阅读 · 0 评论 -
Java反射的用法详解
Java反射详解,如何通过反射获取类的私有属性,如何通过反射调用类的私有方法?原创 2015-12-03 14:20:11 · 2137 阅读 · 0 评论 -
Java基础概念
我们已知Java有三大主要特性:封装、继承、多态。为了更全面的探索学习,我们把接口、抽象也加入到其主要特性之列。故,本篇就探讨Java的五大特性:封装、继承、多态、接口、抽象。提供一个java学习网址:https://www.tutorialspoint.com/java/java_encapsulation.htm封装继承多态接口 封装封装是Java的基础特性之一。...原创 2018-07-21 15:49:29 · 1569 阅读 · 0 评论