摘要: 为每个线程保存各自的拷贝,可以通过在Thread类中定义一个成员变量来保存每个线程值,这样也是线程安全的。 通过定义一个成员变量 sn 来实现,这里并没有使用ThreadLocal类来实现: public class Test { public static void main(String[] a 阅读全文
posted @ 2017-06-20 23:41 mzzcy 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 1、32位jvm、64位区别? 2、 阅读全文
posted @ 2017-06-20 14:39 mzzcy 阅读(123) 评论(0) 推荐(0) 编辑
摘要: 一、封装: 对内 可封装自己的实现细节,使之信息隐藏不被其它类破坏; 对外 各个类之间分工明确, 其它类无需关心实现细节,类中细节发生改变,其它类也无需作出更改; 二、继承: 从已有的类中派生出新的类,以达到功能和属性扩展的目的;使得易扩展、类之间层次清晰、代码高度复用; 缺点:打破了封装 三、多态 阅读全文
posted @ 2017-06-20 12:25 mzzcy 阅读(187) 评论(0) 推荐(0) 编辑
摘要: == 和 equals()比较 instanceof 理解hashCode 与 equals()的关系 Object类中的定义的方法 sleep() wait() 区别,及yield()方法 理解接口 和 继承 为什么String等包装类是不可变量 Java中private方法能重写吗 Math.round(n) switch case支持的类型 循环中的跳转控制 阅读全文
posted @ 2017-06-20 11:01 mzzcy 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 一、数据类型分类:主要分为 基本类型、引用类型两大类; 二、基本类型 转换原则 1、类型转换主要在在 赋值、方法调用、算术运算 三种情况下发生。 a、赋值和方法调用 转换规则:从低位类型到高位类型自动转换;从高位类型到低位类型需要强制类型转换: (1)布尔型和其它基本数据类型之间不能相互转换; (2 阅读全文
posted @ 2017-06-20 09:12 mzzcy 阅读(25915) 评论(0) 推荐(1) 编辑
摘要: 一、浅拷贝、深拷贝 浅拷贝会对对象中的成员变量进行拷贝:如果是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ; 深拷贝,除了基本类型外,引用类型所引用的对象也会进行拷贝;(引用的对象只要求浅拷贝即可;若要深层拷贝,一般可利用序列化和反序列化来实现,也可手动实现 阅读全文
posted @ 2017-06-19 23:00 mzzcy 阅读(630) 评论(0) 推荐(0) 编辑
摘要: 一、GC主要针对什么区域 1. 程序计数器、虚拟机栈、本地方法栈,3个部分随线程而生死。每个栈桢分配多少内存基本上是在类结构确定下来时就已确定,大体上可认为是 编译期可知。 2. 而 堆 和 方法区 则不一定,如一个接口多个实现类需要内存不一样,一个方法多个分支需要分配内存也不一样;这些只有一实现运 阅读全文
posted @ 2017-06-19 15:37 mzzcy 阅读(1114) 评论(0) 推荐(0) 编辑
摘要: 主要讨论默认的Serial/Serial Old内存分配: 一、几种分配方案 1. 对象优先在Eden分配; 一般情况下,对象会在新生代的Eden区分配,Eden区没有足够空间时,虚拟机会 发起一次MinorGC;当MinorGC时,若无法放入survivor空间,就会再通过分配担保机制转移到老年代 阅读全文
posted @ 2017-06-19 12:25 mzzcy 阅读(4715) 评论(0) 推荐(0) 编辑
摘要: -Xm s 堆初始大小 -Xm x 堆最大大小 -Xm n 堆中新生代大小 可参考:JVM调优:GC 参数 阅读全文
posted @ 2017-06-19 10:37 mzzcy 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 一、什么是安全点: 在可达性分析算法中查找存活的对象,首先要找到哪些是GC Roots; 有两种查找GC Roots的方法: 一种是遍历方法区和栈区来查找(保守式GC); 一种是通过OopMap的数据结构来记录引用的位置(准确式GC),如在类加载过程中,JIT编译过程中,分别记录下 类成员 和 调用 阅读全文
posted @ 2017-06-18 22:37 mzzcy 阅读(1446) 评论(0) 推荐(0) 编辑