摘要:这里所说的ThreadLocal的内存泄露问题,其实都是从ThreadLocalMap中的一段代码说起的,这段代码就是Entry的构造方法: static class Entry extends WeakReference,ThreadLocal{ /** The value associated
阅读全文
摘要:volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。 volatile仅能使用在变量级别;synchronized则可以使用在变量、方法、和类级别的 volatil
阅读全文
摘要:1 lock是接口实现,synchronized是内置方法native实现 2 lock可以主动释放锁,synchronized只能是加锁的代码块执行完毕或者遇到异常退出被动的释放锁 3 性能方面,如果竞争资源不是很激烈的情况,两者的性能差不太多,如果是在竞争资源激烈的情况下,lock的性能要优于s
阅读全文
摘要:1、所有线程共享的内存数据区:方法区,堆。而虚拟机栈,本地方法栈和程序计数器都是线程私有的。 2、存放于栈中的东西如下: 2.1 每个线程包含一个栈区,栈中只保存基础数据类型的对象和自定义对象的引用(不是对象)。对象都存放在堆区中。 2.2 每个栈中的数据(基础数据类型和对象引用)都是私有的,其他栈
阅读全文
摘要:关于阻塞与非阻塞 同步与异步的区别:一般来说IO分为两个阶段, 第一阶段是等待数据阶段, 第二阶段是内核空间的数据拷贝到用户空间,假设一个线程(或是进程)P准备执行一个IO操作的话它会经历以下过程: 第一阶段: P发出一个IO请求,这时候会有两种情况: 1:立刻返回: 非阻塞 2:一直等待,P调用s
阅读全文
摘要:1 线程安全方面 HashMap是非线程安全的,HashTable是线程安全的 2 初始化容量 HashMap的初始化容量是 16,HashTable的初始化容量是 11,两者的扩容因子都是0.75 3 扩容方式 HashMap扩容时是当前容量翻倍 即 capacity*2,HashTable扩容时
阅读全文
摘要:1 接口类和抽象类都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类的对象,接口变量必须指向实现所有接口方法的类对象 2 抽象类要被子类继承,接口要被类实现 3 接口只能做方法声明,抽象类可以做方法申明,也可以被方法实现 4 接口里面定义的变量只能是公共的静态常量,抽象类中的变
阅读全文
摘要:Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区,这些区域有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有的区域依赖用户线程的启动和结束而建立和销毁 根据Java虚拟机的规范(JavaSE 7)的规定,Java虚拟机所管理的内存将会包括以下
阅读全文
摘要:jps:JVM Process StatusTool,显示指定系统内所有的HotSpot虚拟机进程 jstat:JVM Statistics Monitoring Tool,用于手机HotSpot虚拟机各方面的运行数据 jinfo: Configuration Info for Java 显示虚拟机
阅读全文
摘要:类与类加载器 类加载器虽然只用于类的加载动作,但是它在Java程序中起的作用远远不限于类加载阶段.对于任意一个类都需要由加载它的类加载器和这个类本身一同确立其在 Java虚拟机的唯一性,换句话说:比较两个类是否"相等",只有在这两个类由同一个加载器加载的前提下才有意义,否则即使这两个类是来源于同一个
阅读全文
摘要:Java的反射机制概念 主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会
阅读全文
摘要:“全盘负责”是指当一个ClassLoader装载一个类时,除非显示地使用另一个ClassLoader,则该类所依赖及引用的类也由这个CladdLoader载入。 例如,系统类加载器AppClassLoader加载入口类(含有main方法的类)时,会把main方法所依赖的类及引用的类也载入,依此类推。
阅读全文
摘要:类加载器是 Java 语言的一个创新,也是 Java 语言流行的重要原因之一。它使得 Java 类可以被动态加载到 Java 虚拟机中并执行。类加载器从 JDK 1.0 就出现了,最初是为了满足 Java Applet 的需要而开发出来的。Java Applet 需要从远程下载 Java 类文件到浏
阅读全文
摘要:1 标记-清理算法:最基础的垃圾回收算法,正如他的名字一样,算法分为标记和清理两个步骤:首先标记出需要清理的对象,在标记完成后统一回收掉所有标记的对象,此算法的缺点:一个是效率问题,标记和清除过程的效率都不高,另外一个是空间问题,标记清除后会 产生大量不联系的内存碎片,空间碎片太多可能回导致当程序在
阅读全文
摘要:(1)JRE(Java Runtime Environment),也就是java平台。所有的java程序都要在JRE环境下才能运行。 (2)JDK(Java Development Kit),是开发者用来编译、调试程序用的开发包。JDK也是JAVA程序需要在JRE上运行。 (3)JVM(Java V
阅读全文