随笔分类 - Java
摘要:除直接调用System.gc外,触发Full GC执行的情况有如下四种。1. 旧生代空间不足旧生代空间只有在新生代对象转入及创建为大对象、大数组时才会出现不足的现象,当执行Full GC后空间仍然不足,则抛出如下错误:java.lang.OutOfMemoryError: Java heap spa
阅读全文
摘要:[转]介绍Java中的内存泄漏 1. 什么是内存泄漏? 内存泄漏的定义:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。 要想理解这个定义,我们需要先了解一下对象在内存中的状态。下面的这张图就解释了什么是无用对象以及什么是未被引用对象。 2. 为什么会发生内存泄漏? 来先
阅读全文
摘要:一、创建对象的四种方法: a. new语句; b. 利用反射,调用描述类的Class对象的newInstance()实例方法; c. 调用对象的clone(); d. 反序列化; 其中new 和 newInstance()会调用类的构造方法,而clone()和反序列化不会; Cloneable接口:
阅读全文
摘要:一、概要: 类的生命周期从类的 加载、连接、初始化 开始,到类的 卸载结束; 二、几个阶段: 加载:查找并加载类的二进制数据。(把类的.class文件的二进制数据读入内存,存放在运行时数据区的方法区;类加载的最终结果是产生 堆区中描述对应类的Class对象); 连接:包括验证、准备和解析三个子阶段;
阅读全文
摘要:JAVA各版本更新特性1-8 原文地址 Java Versions, Features and History This article gives you a highlight of important features added in every major Java release. Ch
阅读全文
摘要:什么是泛型: 泛型从字面上理解,是指一个类、接口或方法支持多种类型,使之广泛化、一般化和更加通用。Java中使用Object类来定义类型也 能实现泛型,但缺点是造成原类型信息的丢失,在使用中容易造成ClassCastException。 什么是泛型: 泛型从字面上理解,是指一个类、接口或方法支持多种
阅读全文
摘要:1. 进程和线程区别: 进程通常是代表一个应用程序,进程中包含一个以上线程; 系统会为进程分配独立的内存资源,其中线程可以共享进程中的资源,线程也有自己的少量资源空间(如程序计数器,一组寄存器和栈); 线程是系统CPU调度的基本单位; 2. 创建与启动的两种方式: 1. 进程和线程区别: 进程通常是
阅读全文
摘要:Java支持整数类型数据的位运算: &:与运算; ^:异或运算; |:或运算; ~:取反;(一元操作符) >>:算术右移;(考虑符号位,添加的位与符号位相同) >>>:逻辑右移运算; <<:左移运算; 均按补码来做运算; 注:计算机中加减法用补码,乘除法用原码; 计算机如何做乘法运算的?
阅读全文
摘要:在类的加载过程中的解析阶段,Java虚拟机会把类的二进制数据中的符号引用 替换为 直接引用,如Worker类中一个方法: 在Worker类的二进制数据中,包含了一个对Car类的run()方法的符号引用,它由run()方法的全名 和 相关描述符组成。在解析阶段,Java虚拟机会把这个符号引用替换为一个
阅读全文
摘要:Annotation(注解)是JDK5.0及以后版本引入的。它的作用是修饰编程元素。什么是编程元素呢?例如:包、类、构造方法、方法、成员变量等。 看过的几篇文章: java 注解的几大作用及使用方法详解 Java学习之注解Annotation实现原理 Java中的注解是如何工作的?
阅读全文
摘要:线程池的核心:控制线程数量,线程的复用; 适用场景:并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,因为频繁创建和销毁线程也需要占不少的CPU和内存,使用线程池能很大地提高效率。 http://www.cnblogs.com/dolphin0520/
阅读全文
摘要:为每个线程保存各自的拷贝,可以通过在Thread类中定义一个成员变量来保存每个线程值,这样也是线程安全的。 通过定义一个成员变量 sn 来实现,这里并没有使用ThreadLocal类来实现: public class Test { public static void main(String[] a
阅读全文
摘要:一、封装: 对内 可封装自己的实现细节,使之信息隐藏不被其它类破坏; 对外 各个类之间分工明确, 其它类无需关心实现细节,类中细节发生改变,其它类也无需作出更改; 二、继承: 从已有的类中派生出新的类,以达到功能和属性扩展的目的;使得易扩展、类之间层次清晰、代码高度复用; 缺点:打破了封装 三、多态
阅读全文
摘要:== 和 equals()比较
instanceof
理解hashCode 与 equals()的关系
Object类中的定义的方法
sleep() wait() 区别,及yield()方法
理解接口 和 继承
为什么String等包装类是不可变量
Java中private方法能重写吗
Math.round(n)
switch case支持的类型
循环中的跳转控制
阅读全文
摘要:一、数据类型分类:主要分为 基本类型、引用类型两大类; 二、基本类型 转换原则 1、类型转换主要在在 赋值、方法调用、算术运算 三种情况下发生。 a、赋值和方法调用 转换规则:从低位类型到高位类型自动转换;从高位类型到低位类型需要强制类型转换: (1)布尔型和其它基本数据类型之间不能相互转换; (2
阅读全文
摘要:一、浅拷贝、深拷贝 浅拷贝会对对象中的成员变量进行拷贝:如果是基本类型,拷贝的就是基本类型的值;如果属性是内存地址(引用类型),拷贝的就是内存地址 ; 深拷贝,除了基本类型外,引用类型所引用的对象也会进行拷贝;(引用的对象只要求浅拷贝即可;若要深层拷贝,一般可利用序列化和反序列化来实现,也可手动实现
阅读全文
摘要:一、GC主要针对什么区域 1. 程序计数器、虚拟机栈、本地方法栈,3个部分随线程而生死。每个栈桢分配多少内存基本上是在类结构确定下来时就已确定,大体上可认为是 编译期可知。 2. 而 堆 和 方法区 则不一定,如一个接口多个实现类需要内存不一样,一个方法多个分支需要分配内存也不一样;这些只有一实现运
阅读全文
摘要:主要讨论默认的Serial/Serial Old内存分配: 一、几种分配方案 1. 对象优先在Eden分配; 一般情况下,对象会在新生代的Eden区分配,Eden区没有足够空间时,虚拟机会 发起一次MinorGC;当MinorGC时,若无法放入survivor空间,就会再通过分配担保机制转移到老年代
阅读全文
摘要:-Xm s 堆初始大小 -Xm x 堆最大大小 -Xm n 堆中新生代大小 可参考:JVM调优:GC 参数
阅读全文

浙公网安备 33010602011771号