- 博客(11)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 《Java虚拟机》之垃圾收集器和内存分配策略
目录 一.概述 二.内存回收的实现 三.再谈引用 四.再论对象生死与否 五.垃圾收集算法 一.概述 在上一节中我们谈论到自动内存管理机制,很显然,对于虚拟机而言,其不断的创建对象和销毁对象的过程,必然有内存操作上的“得与失”。针对有限的内存资源,我们显然要做到资源最优化,那么这就是我们将要做到的内存回收,即实现垃圾收集器。在实现真正的内存回收前,我们不妨考虑下: ...
2019-01-20 11:53:48
102
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 《Java虚拟机》之内存管理机制
《Java虚拟机》之内存管理机制 为什么Java程序员要理解jvm原理 Java作为一门面向对象的编程语言,与C++之间有一个明显的隔离区,即为内存动态分配和垃圾回收机制。对于我们Java程序员来说,相对于C++里面的需要为每一个new操作去手动配写delete/free代码,得益于虚拟机自动内存管理机制,我们完全可以省去这一繁杂的步骤。当然了,这个有利必有弊。由虚拟机自动管理内存,表面看来不错,...
2019-01-09 20:50:44
186
1
原创 《Java虚拟机》之内存模型与线程(下)
在编程学习中,并发是我们躲不开的一个话题。在Java语言里的并发,大多数都与线程离不开。我们将探讨在Java虚拟机里面线程是如何实现的。 二.Java与线程 当说起进程时,我们第一想起的就是多线程。在开始分析之前,我们有必要明确何为进程,何为线程。我们知道,一个良好的定义和理解是对系统学习的一大助力。在百度百科中的对线程和进程的定义是这样的: 线程(thread)是操作...
2019-03-02 16:46:33
124
原创 《Java虚拟机》之内存模型与线程(上)
一.Java内存模型 JMM(Java Memory Model)的出现是为了屏蔽掉各种硬件和操作系统之间存在的内存访问差异,以期实现Java程序在各种平台上都可以达到一致的内存访问效果。 1.1主内存和工作内存 Java内存模型的只要目标时定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中去除变量这样的底层细节。需要注意一点,这里的变量与Java编程...
2019-03-01 17:02:06
127
原创 《Java虚拟机》之类加载器
什么是类加载器 Java类加载器的作用是在运行时加载类,它通过加载class文件,网络上的字节流或者是其他来源构造class对象,用于生成对象在程序中运行。 什么是类加载器 类加载器是一个用来加载类文件的类。类加载器虽然只用于实现类的加载动作。但它在Java程序中的作用远不限于类加载器。对于任意一个类,都需要由加载它的类加载器和这个类本身以通确立其在Java虚拟机中的...
2019-02-27 21:00:35
205
原创 《Java虚拟机》之类加载机制
一.类加载的时机 类从被加载到虚拟机内存开始,到卸载出内存为止,大致的生命周期为:加载(loading)->验证(Verification)->准备(Preparation)-》解析(Resolution)-》初始化(Initialization)->使用(Using)-》卸载(Unloading)等七个阶段。 在这当中,加载,验证,准备,初始...
2019-02-27 20:58:10
125
原创 java的一些小知识点
1. Abstract与哪些类不能共存,为什么(private, final,static) Abstract为抽象类,如果方法前面有abstract修饰,则为抽象方法,抽象方法是需要被继承才有意义的,而被final修饰的方法为最终方法,不可被继承,因此abstract与final矛盾; 2. Static 的特点 1、随着类的加载而加载 也就是说:静态会随着类的消失而消失...
2018-05-09 19:52:37
651
原创 ArrayList源码解析
ArrayList源码解析 // 注意:此处我们需要将 AbstractList<E> 的源码拷贝到同包下的 AbstractList<E> 类中 // 否则若是直接使用 java.util.AbstractList,会报错,因为我们无权访问 modCount。因 // 该变量的声明为 protected transient int modCount =...
2018-04-10 19:35:16
97
转载 Java之学习总结
01.Java基础语法一、标识符:凡是自己命名的地方都叫标识符。 如: 包名、类名、接口名、方法名、变量名、常量名关键字:被Java赋予了特殊含义的单词。1. 命名的规则 (必须遵守,若不遵守编译不能通过)①可使用 字母 A-Z a-z 数字 0-9 特殊字符 下划线 "_" 和 美元符 “$”②数字不能开头③其中不能包含空格④不能使用关键字和保留字,但是可以包含关键字和保留字⑤Ja...
2018-04-10 18:43:44
188
转载 HashMap分析
众所周知,ArrayList是基于数组实现的,LinkedList是基于链表实现的。它们各自有自己的优劣势,例如ArrayList在定位查找元素时会优于LinkedList,而LinkedList在添加删除元素时会优于ArrayList。而本篇介绍的HashMap综合了二者的优势,它的底层是基于哈希表实现的,如果不考虑哈希冲突的话,HashMap在增删改查操作上的时间复杂度都能够达到惊人的O(1)...
2018-04-10 18:22:37
155
翻译 集合系列—ArrayList源码分析
数组可能是我们最早接触到的数据结构之一,它是在内存中划分出一块连续的地址空间用来进行元素的存储,由于它直接操作内存,所以数组的性能要比集合类更好一些,这是使用数组的一大优势。但是我们知道数组存在致命的缺陷,就是在初始化时必须指定数组大小,并且在后续操作中不能再更改数组的大小。在实际情况中我们遇到更多的是一开始并不知道要存放多少元素,而是希望容器能够自动的扩展它自身的容量以便能够存...
2018-04-10 18:05:57
150
基于QT实现的MQTT客户端
2019-11-21
xust:基于ok6410利用ov9650实现无线图像采集系统
2019-01-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人