- 博客(7)
- 资源 (1)
- 收藏
- 关注
原创 文章标题
sleep指线程被调用时,占着CPU不工作,形象地说明为“占着CPU睡觉”,此时,系统的CPU部分资源被占用,其他线程无法进入,会增加时间限制。 wait指线程处于进入等待状态,形象地说明为“等待使用CPU”,此时线程不占用任何资源,不增加时间限制。 所以 sleep(100L)意思为:占用CPU,线程休眠100毫秒 wait(100L)意思为:不占用CPU,线程等待100毫秒 这两个方法
2016-05-03 14:40:28 215
转载 Java多态
多态的机制是通过父类或接口定义的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法
2016-05-03 14:19:13 229
转载 内存回收的角度,java堆细分
Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。 在 Java 中,堆被划分成两个不同的区域:新生代 ( Young )、老年代 ( Old )。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 这样划分的目的是为了使 JVM 能够更好的管理堆内存中的对象,包括内存的分配以及回收。 堆大小 =
2016-04-22 11:03:52 629
原创 对象创建,内存布局,对象的访问定位
在java虚拟机中对象的创建: 1.虚拟机在遇到new关键字先去常量池寻找这个类的符号引用来检查该引用的类是否已经被加载解析和初始化,若没有则执行类加载过程 2.分配内存空间 两种方法:指针碰撞(内存规整)、空闲列表(内存不规整) 在面临并发的时候有两种方法解决内存冲突,一同步处理采用CAS和失败重试的方法保证更新操作的原子性;二采用本地线程分配缓冲就是预先分配一小块内存用完采用同步锁定操作
2016-04-22 10:14:42 295
原创 内存的数据区域
1 程序计数器(线程私有) 当前线程所执行的字节码的行号指示器,在多线程中为了线程切换后能恢复到正常的执行位置,每个线程都有自己的程序计数器,此内存区域是唯一一个在java虚拟机规范中没有规定任何OutMemoryERROR情况的区域 2java虚拟机栈(线程私有) 它的生命周期和线程相同,java方法的执行的内存模型,用于存放局部变量表(在编译时分配)(基本数据类型,对象引用,返回地址类型)
2016-04-20 09:35:20 273
原创 List Set Queue Map
ArrayList 一种用循环数组实现的双端队列,可以随机访问元素 LinkedList 双向链接的,有序集合,通过迭代器删除元素,add将元素添加到链表的尾部。 要添加到中间也是通过迭代器实现的,通过ListIterator实现 不支持快速的随机访问 hashtable 快速查找所需的元素,用链表数组实现,会有散列冲突问题
2016-04-19 10:19:51 244
转载 Android缓存方法
一、onSaveInstanceState (Bundle outState)(调用时机onStop之前) 通过重写一个activity的所有生命周期的onXXX方法,包括onSaveInstanceState和onRestoreInstanceState方法,我们可以清楚地知道当某个activity(假定为activity A)显示在当前task的最上层时,其onSaveInstanceStat
2016-04-18 15:56:12 284
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人