JVM之垃圾收集算法与垃圾收集器(四) 垃圾收集算法从如何判定对象消亡的角度出发,垃圾收集算法可以划分为引用计数式垃圾收集和追踪式垃圾收集,由于引用计数式垃圾收集在主流JVM并未涉及,所以追踪式垃圾收集为主。 当前的JVM大多数遵循了分代收集理论进行设计,它主要建立在两个分代假说上面:弱分代假说和强分代假说。分代假说奠定了收集器的设计原则:收集器应该将Java堆划分出不同的区域,然后将回收对象依据其年龄分配到不同的区域之中存储。 标记- 2020-03-24 Java > JVM #Java #JVM
JVM之垃圾收集策略(三) 垃圾收集策略程序计数器,虚拟机栈,本地方法栈随线程而生,随线程而灭,栈中的栈帧随着方法的进入和退出而执行入栈和出栈操作,每个栈帧分配多少内存基本上是在类结构确定下来时就已知的,因此这几个区域的分配和回收具备确定性。在这几个区域不需要过多考虑如何回收的问题,当方法执行结束或者线程结束,内存自然就跟随着回收。而Java堆和方法区,只有程序运行期间才知道会创建多少对象,这部分内存的分配和回收都是动态的, 2020-03-23 Java > JVM #Java #JVM
JVM之HotSpot VM对象(二) 对象的创建过程类加载检查当JVM遇到一条字节码new指令时,首先去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并检查这个符号引用代表的类是否已被加载,解析和初始化过。如果没有,那么先执行相应的类加载过程。 为新生对象分配内存对象所需内存的大小再类加载完成后便可完全确定(对象的字段存储的时基本类型值,对象和数组的引用),接下来从Java堆中划分出对应大小的内存块给新的对象,分配方式有两 2020-03-22 Java > JVM #Java #JVM
JVM之Java内存结构(一) Java运行时数据区域数据区域主要分为五个部分: 程序计数器 虚拟机栈 本地方法栈 堆 方法区 其中所有线程共享区域有:方法区和堆。 每个线程独享区域有:虚拟机栈,本地方法栈,程序计数器 线程独享的区域程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器,如果当前线程执行的是一个本地方法,那么此时计数器的值为undefined,是唯一一个不会出现OutOf 2020-03-21 Java > JVM #Java #JVM
排序算法总结 性质稳定性稳定性指相等的元素经过排序之后相对顺序是否发生了改变。 时间复杂度对于基于比较的排序算法的时间复杂度,较好的性能是$O(nlogn)$,坏的性能是$O(n^2)$。一个排序算法的理想性能是$O(n)$,但是平均而言不可能达到。 选择排序Selection sort是较为简单的一种排序算法,每次找到第$i$小的元素,然后将这个元素与数组的第$i$个位置上的元素交换。换句话说:每次找到未完成 2020-03-10 计算机基础 > 算法 #算法
分布式锁的实现方案 简介 分布式锁是控制分布式系统或不同系统之间共同访问共享资源的一种锁实现,如果不同的系统或同一个系统的不同主机之间共享了某个资源时,往往需要互斥来防止彼此干扰来保证一致性。 分布式锁需要具备的条件: 互斥性:在任意一个时刻,只有一个客户端持有锁。 无死锁:即使持有锁的客户端崩溃或者其他意外事件,锁仍然可以被获取。 容错:只要大部分Redis节点都活着,客户端可以获取和释放锁。 分布式锁的主要 2020-01-02 分布式系统 #分布式系统
2019和2020 2019总结在2018的总结中,我的2019TodoList都大概实现,在2019年,参加了几个实验室老师的科研项目(搬砖仔),暑假因为实验室项目的原因,并未能出去实习,而是留在学校做项目。 本年个人完成了以下成绩: 大创项目 - 基于微信小程序和SSM框架的宿舍服务平台 在线考试系统 基于微信小程序的危险品驾驶员安全培训平台 人力资源大数据分析及智能化服务平台 智能垃圾桶云平台管理系统 对自 2019-12-31 随笔
Git命令记录 1. 基本操作基本命令mkdir notes cd notes # 初始化一个git仓库 git init echo "my notes" > readme.md # 查看状态 git status # 查看修改内容 git diff readme.md # 添加文件到仓库 git add readme.md # 提交更改 git commit -m &qu 2019-05-30 Git #Git