摘要: 新生代中的98%对象都是“朝生夕死”的,所以并不需要按照1:1的比例来划分内存空间,而是将内存分为一块比较大的Eden空间和两块较小的Survivor空间,每次使用Eden和其中一块Survivor。当回收时,将Eden和Survivor中还存活着的对象一次性地复制到另外一块Survivor空间上, 阅读全文
posted @ 2016-08-09 15:43 wade&luffy 阅读(543) 评论(0) 推荐(0) 编辑
摘要: GC的概念 GC:Garbage Collection 垃圾收集。这里所谓的垃圾指的是在系统运行过程当中所产生的一些无用的对象,这些对象占据着一定的内存空间,如果长期不被释放,可能导致OOM(堆溢出)。 内存区域中的程序计数器、虚拟机栈、本地方法栈这3个区域随着线程而生,线程而灭;栈中的栈帧随着方法 阅读全文
posted @ 2016-08-09 15:19 wade&luffy 阅读(1724) 评论(1) 推荐(0) 编辑
摘要: 每当启动一个新线程时,Java虚拟机都会为它分配一个Java栈。Java栈以帧为单位保存线程的运行状态。虚拟机只会直接对Java栈执行两种操作:以帧为单位的压栈和出栈。 某个线程正在执行的方法被称为该线程的当前方法,当前方法使用的栈帧称为当前帧,当前方法所属的类称为当前类,当前类的常量池称为当前常量 阅读全文
posted @ 2016-08-09 14:16 wade&luffy 阅读(7723) 评论(0) 推荐(1) 编辑
摘要: 首先,当一个程序启动之前,它的class会被类装载器装入方法区,执行引擎读取方法区的字节码自适应解析,边解析就边运行(其中一种方式),然后pc寄存器指向了main函数所在位置,虚拟机开始为main函数在java栈中预留一个栈帧(每个方法都对应一个栈帧),然后开始跑main函数,main函数里的代码被 阅读全文
posted @ 2016-08-09 13:57 wade&luffy 阅读(725) 评论(0) 推荐(0) 编辑
摘要: 观察控制台输出和任务管理器的javaw.exe会发现,当main函数的for循环打印完的时候,程序居然没有退出,而等到整个new Thread()里的匿名类的run方法执行结束后,javaw.exe才退出。 我们知道在c++的win32编程(CreatThread()),main函数执行完了,寄宿线 阅读全文
posted @ 2016-08-09 13:19 wade&luffy 阅读(580) 评论(0) 推荐(0) 编辑
摘要: JVM工作原理和特点主要是指操作系统装入JVM,是通过jdk中Java.exe来完成,通过下面4步来完成JVM环境. 1.创建JVM装载环境和配置 2.装载JVM.dll 3.初始化JVM.dll并挂界到JNIENV(JNI调用接口)实例 4.调用JNIEnv实例装载并处理class类。 一.JVM 阅读全文
posted @ 2016-08-09 11:38 wade&luffy 阅读(411) 评论(0) 推荐(1) 编辑
摘要: 什么是Java虚拟机 虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可 阅读全文
posted @ 2016-08-09 11:27 wade&luffy 阅读(714) 评论(1) 推荐(2) 编辑
摘要: 基本的拷贝是浅拷贝,只会拷贝基础类型的值,其他是属性引用拷贝,公用一个属性实例。 重写clone进行深拷贝,不再拷贝引用直接拷贝数值。 如何利用序列化来完成对象的拷贝呢?在内存中通过字节流的拷贝是比较容易实现的。把母对象写入到一个字节流中,再从字节流中将其读出来,这样就可以创建一个新的对象了,并且该 阅读全文
posted @ 2016-08-05 15:46 wade&luffy 阅读(228) 评论(0) 推荐(1) 编辑
摘要: Java中集合大家族的成员实在是太丰富了,有常用的ArrayList、HashMap、HashSet,也有不常用的Stack、Queue,有线程安全的Vector、HashTable,也有线程不安全的LinkedList、TreeMap等等! 上面的图展示了整个集合大家族的成员以及他们之间的关系。下 阅读全文
posted @ 2016-08-05 15:21 wade&luffy 阅读(258) 评论(0) 推荐(0) 编辑
摘要: subList subList返回仅仅只是一个视图。直接上源码 subListRangeCheck方式是判断fromIndex、toIndex是否合法,如果合法就直接返回一个subList对象,注意在产生该new该对象的时候传递了一个参数 this ,该参数非常重要,因为他代表着原始list。 该S 阅读全文
posted @ 2016-08-05 14:18 wade&luffy 阅读(826) 评论(0) 推荐(0) 编辑