![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 74
金融码农之路
没有什么比坚持是更有意义的事了
展开
-
JVM-JVM内存模型
title: JVM内存结构date: 2018-11-07 15:00:00tags: JAVA基础一.JVM的概念JVM是Java Virtual Machine的缩写,及java虚拟机。JVM是java语言平台无关性的关键,Java语言编译程序只需生成在JVM上运行的字节码,然后JVN将字节码解释成具体平台上的机器指令执行。这个特性使得Java能够“一次编译,到处运行”。而其他的高...原创 2018-11-13 17:32:15 · 251 阅读 · 0 评论 -
JVM学习笔记-垃圾回收算法
现在流行的商业虚拟机,都是采用“分带收集”(Generational Collection)算法,这种算法只是根据对象存活周期的不同将内存划分为几块。一般把Java堆分为新生代和老年代,这样就可以根据各个年代的特点选择合适的回收算法:在新生代中,每次GC时大部分对象都将死去,这时选用复制算法,只需要复制少量存活对象就可以完成垃圾回收。在老年代中,由于对象存活率高,况且没有额外的空间对它进行分...原创 2019-07-11 22:27:48 · 126 阅读 · 0 评论 -
JVM学习笔记-如何判断对象是否还存活
我们之前了解到了Java内存运行时区域的各个部分,其中程序计数器、虚拟机栈、本地方法栈这3个区域随线程而生,随线程而灭。这几个区域不需要过多考虑垃圾回收问题,因为方法或者线程结束时,内存自热就跟着回收了。而Java堆和方法区则不一样,它们属于内存共享的区域,一个接口中的多个实现类需要的内存可能不一样,一个方法中的多个分支需要的内存也可能不一样,我们只有在程序处于运行期间才能知道会创建哪些对象,因此...原创 2019-07-10 23:32:50 · 262 阅读 · 0 评论 -
JVM学习笔记-垃圾收集器
之前我们了解了垃圾回收算法,现在一起来看看垃圾回收的具体实现:垃圾收集器。Java虚拟机规范对于垃圾收集器应该如何实现没有具体的规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器有可能有较大的区别。以下列出的是基于JDK 1.7 Update 14之后的HotSpot虚拟机(在这个版本中正式提供了商用的G1收集器):上图展示了7种不同分代的收集器,如果两个收集器中存在连线,就说明它们之间...原创 2019-07-14 20:28:58 · 145 阅读 · 0 评论 -
JVM学习笔记-内存泄漏异常二
在这片文章中,将讲述方法区、运行时常量池溢出和直接内存溢出两种情况原创 2019-06-09 18:02:23 · 184 阅读 · 0 评论 -
JVM学习笔记-内存泄漏异常一
我们知道,Java虚拟机内存区域主要包括Java虚拟机栈、本地方法栈、Java堆、方法区(包括运行时常量池)、程序计数器和直接内存,其中除了程序计数器外,其他的运行时区域都会发生OutOfMemoryError异常(简称OOM)。下面将讲讲OutOfMemoryError异常的实例,希望通过实例可以让大家有以下的两点认识:通过代码验证Java虚拟机规范中描述的各个运行时区域存储的内容。在实际...原创 2019-06-07 18:24:36 · 418 阅读 · 0 评论 -
线程池原理浅析
前言:由于互联网的发展,多线程技术应用的越来越多,但是一味的创建线程,会带来性能消耗,而且到一定数量后,有可能使服务器崩溃,由此引进了线程池。一、线程池的优点合理的利用线程资源,从而减少线程创建和销毁的次数,提高效率。根据实际情况合理的调整线程池的参数,可以一定程度上提高系统的吞吐量。二、线程池的创建现在以java.util.concurrent包中ThreadPoolExecut...原创 2019-01-27 18:06:18 · 205 阅读 · 0 评论 -
HashMap源码分析二(jdk8)
前言之前的博客HashMap源码分析一(jdk8)已经分析了HashMap的一部分,现在主要来分析HashMap中涉及到红黑树的部分。一、HashMap的红黑树应用在jdk1.8以后,HashMap才用到了红黑树,主要为了改善链表过长的效率问题。说到红黑树,我们首先得理清它的概念。因为红黑树是一种特殊的二叉树,那么我们从二叉树开始讲起。1.、二叉树二叉树二叉树是每个结点最多有两个子树...原创 2019-01-07 18:32:09 · 195 阅读 · 0 评论 -
HashMap源码分析一(jdk8)
一、概述jdk8中hashmap的结构如图所示,它是由数组+链表+红黑树组成,jdk8之前是由数组+链表组成,那么为什么要这么做那?让我们带着疑问一步步往下看。首先看下这几个基本组成结构:**数组:**数组存储结构是连续的,空间复杂度大,但查询的时间复杂度小。其寻址(通过下标搜索)效率高,一般的插入和删除效率低。**链表:**链表存储结构是离散的,空间复杂度小。其寻址(通过下标搜索)效率...原创 2018-12-28 17:18:47 · 289 阅读 · 0 评论 -
ArrayList源码解析
以下的源码解析均基于jdk8一、定义ArrayList是通过动态数组来实现的,与java数组不同的是它可以自动改变容量。它是一个数组队列,提供了相关的添加、删除、修改、遍历等功能。ArrayList不是线程安全的,其类似于Vector,只是Vector是线程安全的。ArrayList能快速随机get和set元素,但随机add和delete元素的效率不高。以下为ArrayList的继承...原创 2018-11-28 15:01:19 · 106 阅读 · 0 评论 -
LinkedList源码分析(jdk1.8)
一、概述上图为LinkedList的继承结构图,根据继承关系总结如下:LinkedList 是一个继承于AbstractSequentialList的双向链表。它也可以被当作堆栈、队列或双端队列进行操作。LinkedList 实现 List 接口,能对它进行队列操作。LinkedList 实现 Deque 接口,即能将LinkedList当作双端队列使用。LinkedList 实现了...原创 2018-11-29 18:08:27 · 226 阅读 · 0 评论 -
Integer源码分析
一.源码分析以下博客讲得很详细:https://blog.csdn.net/wangyangzhizhou/article/details/77196626二.涉及到的面试点自动拆装箱和缓存机制1.1.概念自动装箱:java自动将基本类型转换成其对应的包装器类型,比如将int转换成Integer对象自动拆箱:java自动将包装器类型转换成其对应的基本类型,比如将Integer对象转换...原创 2018-11-18 17:21:39 · 134 阅读 · 0 评论 -
String源码解析一
title: String源码解析一date: 2018-11-07 15:00:00tags: JAVA基础一.类定义、属性与构造函数类定义public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence {final说明类是常量,String类实现了...原创 2018-11-08 12:17:46 · 139 阅读 · 0 评论 -
String源码解析二
title: String源码解析二date: 2018-11-13 15:00:00tags: JAVA基础一.intern方法1.定义/** * Returns a canonical representation for the string object. * <p> * A pool of strings, initially empty, is maint...原创 2018-11-13 19:03:10 · 184 阅读 · 1 评论 -
JVM学习笔记-Java类是如何加载的
1、前言首先我们看以下一段代码,这段代码的输出顺序是怎样的那?/** * 类加载顺序测试 * * @author sj * */public class ClassloadTest { public static void main(String[] args) { System.out.println("--第一次加载开始--"); ChildB childB...原创 2019-09-06 00:34:49 · 119 阅读 · 0 评论