
Java
文章平均质量分 86
npjtwy
这个作者很懒,什么都没留下…
展开
-
JVM(五)启动、加载类过程与类加载器
本文参考自“《Java虚拟机原理图解》5. JVM类加载器机制与类加载过程 ”,对原内容作了些修改并重新组织JVM启动、加载类过程下面我将定义一个非常简单的java程序并运行它,来逐步分析java虚拟机启动的过程。package org.luanlouis.jvm.load; import sun.security.pkcs11.P11Util; /** * Crea...原创 2018-05-09 15:22:55 · 3380 阅读 · 0 评论 -
equals()和hashCode()方法
原文链接 : http://www.importnew.com/25783.htmlJava的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码。equals()和hashCode()都不是final方法,都可以被重写(overwrite)。equal() 方法Object类中equals()方法实...转载 2018-05-24 21:17:25 · 273 阅读 · 0 评论 -
java之HashMap详解
概览HashMap的继承关系java.lang.Object ↳ java.util.AbstractMap<K, V> ↳ java.util.HashMap<K, V>public class HashMap<K,V> extends AbstractMap<K,V> ...原创 2018-05-24 16:38:23 · 411 阅读 · 1 评论 -
java8线程池
java线程的创建、销毁和线程减切换是一件比较耗费计算机资源的事。如果我们需要用多线程处理任务,并频繁的创建、销毁线程会造成计算机资源的无端浪费,因此出现了线程池技术。在《java并发编程的艺术》一书中,作者总结了三条使用线程池的好处: 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。 ...原创 2018-05-25 14:55:43 · 12499 阅读 · 2 评论 -
synchronized和ReentrantLock
synchronizedsynchronized 是一个 JVM 提供实现的内部锁机制。一个 synchronized 块包括一个锁对象引用和代码块。 当 synchronized 作用在方法上时,其锁对象是方法所在对象本身。使用 synchronized 时至多只有一个线程可以获得锁。当线程进入 synchronized 代码块时自动获取锁,离开代码块时自动释放锁。synchron...原创 2018-05-25 10:37:06 · 197 阅读 · 0 评论 -
理解Java Integer的缓存策略
本文由 ImportNew - 挖坑的张师傅 翻译自 javapapers。欢迎加入翻译小组。转载请见文末要求。本文将介绍 Java 中 Integer 缓存的相关知识。这是 Java 5 中引入的一个有助于节省内存、提高性能的特性。首先看一个使用 Integer 的示例代码,展示了 Integer 的缓存行为。接着我们将学习这种实现的原因和目的。你可以先猜猜下面 Java 程序的输出...转载 2018-05-07 09:50:57 · 208 阅读 · 0 评论 -
java中的强引用、软引用、弱引用和虚引用
参考: Java中的强引用,软引用,弱引用,虚引用有什么用? - winterSunshine的回答 - 知乎 https://www.zhihu.com/question/37401125/answer/100981172在Java中有四种引用类型:强引用(Strong Reference)、软引用(soft Reference)、弱引用(weak Reference)和 虚...原创 2018-05-06 17:28:48 · 1837 阅读 · 0 评论 -
java中Error和Exception
如上图所示,java中的Error和Exception都继承自Throwable类,可以统称为“异常”,只是所表示的异常种类不同。Error和Exception的区别Error 类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢出等。如 java.lang.StackOverFlowError 和 Java.lang.OutOfMemoryError...转载 2018-05-06 16:30:35 · 208 阅读 · 0 评论 -
String、StringBuffer和StringBuilder区别
原文链接: http://www.cnblogs.com/su-feng/p/6659064.html 最近在学习Java的时候,遇到了这样一个问题,就是String, StringBuilder 以及 StringBuffer 这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正...转载 2018-05-06 15:11:59 · 144 阅读 · 0 评论 -
Java中native方法
原博文:https://blog.youkuaiyun.com/zmx729618/article/details/50779924Java开发中会碰到声明为 native的方法,如:public native int hashCode(); 这是一个native方法。为什么存在native方法呢?Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作...转载 2018-05-06 15:01:13 · 2121 阅读 · 0 评论 -
Condition接口
Condition 介绍java的 Object 方法拥有一组监视器方法,包括 wait()、notify() 等方法, 这些方法与 synchronized 同步关键字配合,可以实现等待/通知模式。 Condition 接口也提供了类似 监视器方法,不过 Condition 实现的等待/通知模式需要 Lock 对象的配合。Synchrond 等待/通知模型public cla...原创 2018-05-18 20:45:48 · 232 阅读 · 0 评论 -
Arrays.copyOf() 和 System.arraycopy()
Arrays.copyOf() 和 System.arraycopy() 都可以完成数组的复制操作,那么区别在什么地方呢? 首先看一下示例代码。int[] src = new int[] {1, 2, 3, 4, 5};int[] dest = new int[10];Arrays.fill(dest, -1);System.arraycopy(src, 0, dest, 0, ...原创 2018-05-06 11:35:12 · 494 阅读 · 0 评论 -
JVM(二)JVM垃圾回收
在讨论JVM垃圾回收之前先要确定,JVM内存中哪些内存区域会进行GC。哪些内存区域需要GC在JVM的5个内存区域中,程序计数器、虚拟机栈、本地方法栈时随线程而生,随线程而死。程序计数器记录下一条指令的行号,自然不能被回收。虚拟机栈和本地方法栈都是栈内存,只是所服务的对象不同,栈内存中的栈帧随着方法的调用返回而不断进行着出栈入栈操作,方法入栈之前其所需的内存是已知的,在方法执...原创 2018-05-05 22:22:57 · 160 阅读 · 0 评论 -
JVM(三)JVM内存分配与回收策略
新生代和老年代现代商用JVM大都采用分代收集算法,将java堆分成新生代、老年代和永久代。如下图所示 新生代回收策略主要是用来存放新生的对象。一般占据堆的1/3空间。由于频繁创建对象,所以新生代会频繁触发MinorGC进行垃圾回收。新生代又分为 Eden区、ServivorFrom、ServivorTo三个区。Eden区:Java新对象的出生地(如果新创建的对象占用内存...原创 2018-05-05 22:23:12 · 415 阅读 · 0 评论 -
JVM(四)HotSpot虚拟机垃圾回收器
HotSpot虚拟机垃圾回收器 HotSpot虚拟机提供有多种垃圾收集器,这些收集器大多适用于不同的分代内存中,并可以互相配合其他收集器使用。G1是目前最新最先进的垃圾收集器,在新生代和老年代都适用。新生代垃圾收集器Serial 收集器serial收集器是HotSpot虚拟机client模式下默认的新生代收集器。采用复制算法,单线程,在执行垃圾收集任务时会中断用户代码的执...原创 2018-05-05 22:23:19 · 277 阅读 · 0 评论 -
JVM(一)JVM内存模型
JVM内存模型1. 程序计数器程序计数器用来保存要执行的下一条字节码的行号,程序的分支、循环、跳转、异常处理等都依赖这个计数器完成。程序计数器是线程私有的,每个线程维护自己的程序计数器。程序计数器是唯一一个在JVM中没有规定任何OOME情况的区域。2. Java虚拟机栈线程私有的,每个线程都有一个自己的栈,用于存储局部变量表,就是操作系统中的栈概念。 当线程请求的栈深...原创 2018-05-05 22:23:26 · 465 阅读 · 0 评论 -
java中的class类
Class类简述class 类和 java.lang.String, java.lang.Integer 或是我们自定义的类一样,都是java中的类,都继承自 java.lang.Object, 只不过名字比较特殊。对于我们自己定义的类,我们用类来抽象现实中的某些事物,比如我们定义一个名称为 Car 的类来抽象现实生活中的车,然后可以实例化这个类,用这些实例来表示我的车、你的车、黄的车、红...原创 2018-05-09 17:10:12 · 444 阅读 · 0 评论 -
java-AQS
参考: Java并发之AQS详解Lock使用Lock 时要显式地获取和释放锁,虽然获取锁和释放锁相比 synchronized 要麻烦,但是麻烦意味着对于所得操控更加灵活,可以可中断获取锁、超时获取锁等。。Lock 只是一个接口, 它定义了一些获取锁和释放锁的基本操作 方法 描述 void lock() 获取锁,获取后返回 void lockI...原创 2018-06-24 23:07:47 · 660 阅读 · 0 评论