摘要:
前言 移动端平台不断发展,不断迭代更新,APP软件越来越复杂和庞大,维护和更新亦是如此。为了解决这些问题,降低软件的复杂性和耦合度,同时提高开发效率,模块化在移动端就变得势在必行。 模块化理解 模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程。每个模块完成一个特定的子功能,所有的模 阅读全文
摘要:
无关性 Oracle公司以及其他虚拟机发行商发布过许多可以运行在各种不同硬件平台和操作系统上的Java虚拟机,这些虚拟机都可以载入和执行同一种平台无关的字节码,从而实现了程序的“一次编写,到处运行”的平台无关性。 实现语言无关性的基础仍然是虚拟机和字节码存储格式,Java虚拟机不与任何程序语言(包括 阅读全文
摘要:
前言 集成GreenDao查询官网可以看到一则通告:对于新应用程序,我们建议使用ObjectBox,这是一个新的面向对象的数据库,它比SQLite快得多并且易于使用。对于基于greenDAO的现有应用程序,我们提供了DaoCompat,可轻松切换(另请参见公告)。 于是,本篇便对比GreenDao写 阅读全文
摘要:
经典垃圾收集器 经典收集器之间的关系如图,七种作用于不同分代的收集器。两个收集器之间存在连线,就说明它们可以搭配使用。图中收集器所处的区域,则表示它是属于新生代收集器抑或是老年代收集器: 新生代收集器:Serial、ParNew、Parallel Scavenge 老年代收集器:CMS、Serial 阅读全文
摘要:
根节点枚举 以可达性分析算法中从GC Roots集合找引用链这个操作作为介绍虚拟机高效实现的第一个例子。 固定可作为GC Roots的节点主要在全局性的引用(例如常量或类静态属性)与执行上下文(例如栈帧中的本地变量表)中。目标明确,但Java应用越做越庞大,方法区的大小就常有数百上千兆,里面的类、常 阅读全文
摘要:
对象的存活与死亡 堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还“存活”着,哪些已经“死去”。 如何确定对象是否存活? 从如何判定对象消亡的角度出发,垃圾收集算法可分为“引用计数式垃圾收集”(Reference Counting GC 阅读全文
摘要:
介绍 GreenDao是一个开源的 Android ORM嵌入式关系数据库,通过将 Java 对象映射到数据库表(称为 ORM,“对象/关系映射”) ,使用一个简单的面向对象的 API 来存储、更新、删除和查询 Java 对象。 GreenDao特点 最佳性能 (可能是 Android 中最快的 O 阅读全文
摘要:
在《Java虚拟机规范》的规定里,除了程序计数器外,虚拟机内存的其他几个运行时区域都有发生OutOfMemoryError(OOM)异常的可能。 Java堆溢出 Java堆内存的OutOfMemoryError异常是实际应用中最常见的内存溢出异常情况。 产生原因 Java堆用于储存对象实例,不断地创 阅读全文
摘要:
1. 对象的创建 当Java虚拟机遇到一条字节码new指令时,就会开始虚拟机中对象的创建: 1.1 类加载检查 检查new指令的参数是否能在常量池中定位到一个类的符号引用 检查这个符号引用代表的类是否已被加载、解析和初始化过; 如果没有,那必须先执行相应的类加载过程。 1.2 为对象分配内存 对象所 阅读全文
摘要:
Java技术体系 按功能划分 Java程序设计语言 各种硬件平台上的Java虚拟机实现 Class文件格式 Java类库API 来自商业机构和开源社区的第三方Java类库 JDK java Development Kit (Java开发最小运行单位Java程序设计语言、Java虚拟机、Java类库) 阅读全文