JVM-内存分配与回收策略 Java技术体系中所提倡的自动内存管理最终可以归结为自动化的解决了两个问题:给对象分配内存以及回收分配给对象的内存。对象的内存分配,往大方向讲,就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配),对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中,分配的规则并不是百分百固定的,其细节取决于当 2017年04月07日 #JVM
JVM垃圾回收-对象已死? 在堆里面存放着Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象之中哪些还存活着,哪些已经死去(即不能再被任何途径使用的对象)。 2017年03月29日 #JVM
Android N 应用内更新 继之前跪在Android M的动态权限之后,最近又跪在了Android N的StrictMode上了。所以啊,要对技术持有敬畏的态度。场景如下:我司内部员工使用的APP需要有应用内更新的功能,意思就是在应用内下载最新版本的应用并且调起安装界面。方案:由于每次从新打开app都需要重新登录,那就在登录界面加上检查更新的接口请求,后台对比当前版本App的VersionCode 和 数据库存储的Versi 2017年03月28日 #Android #Android爬坑之旅
JVM内存区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁的时间.有的区域随着虚拟机进程的启动而存在,有些区域则依赖用户线程的启动和结束而建立和销毁.根据《Java虚拟机规范(JavaSE 7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域.如下所示: 2017年03月27日 #JVM
Android的消息机制 Android消息机制主要是指Handler的运行机制,Handler的运行需要底层的MessageQueue和Looper的支撑。MessageQueue的中文翻译是消息队列,它的内部存储了一组消息,以队列的形式对外提供插入和删除的工作。虽然叫消息队列,但是它的内部存储结构并不是真正的队列,而是采用单链表的数据结构来存储消息队列。Looper可以理解为消息循环。由于MessageQueue只 2017年03月23日 #Android
Window和WindowManager Window表示一个窗口的概念,在日常开发中直接接触WIndow的机会并不对,再试在某些特殊时候我们需要在桌面上显示一个类似悬浮窗的东西,那么这种效果就需要用到Window来实现。 Window只是个抽象类,它的具体实现是PhoneWindow。创建一个Window是很简单的事,只需要通过WindowManager即可完成,WindowManager是外界访问Window的入口,Window 2017年03月21日 #Android
简单的桌面小部件 实现一个简单的桌面小部件,响应点击事件,更新等功能。 定义小部件界面 定义小部件配置信息 定义小部件的实现类 声明小部件在AndroidStudio中只需要在main\java下新建一个widget,就可以了,IDE会自动在res\layout添加布局文件,在res\xml下新建配置信息文件。然后就可以进行具体实现了。 2017年03月20日 #Android
View的滑动 View的位置主要由它的四个顶点来决定,分别对应于View的四个属性:top,left,right,bottom,其中top是左上角的纵坐标,left是左上角的横坐标,right是右下角的横坐标,bottom是右下角的纵坐标。需要注意的是,这些坐标都是相当于View的父容器来说的,因此它是一种相对坐标,View的坐标和父容器的关系如下所示: width = right - left 2017年03月15日 #Android