- 博客(6)
- 收藏
- 关注
原创 Java平台的理解(JDK和JRE的区别)
Java是一种面向对象的编程语言,相比其它编程语言有两大显著特性: 一、“书写一次,到处运行”,有强大的跨平台能力。 二、通过垃圾收集器(GC)回收分配的内存,大多数情况,程序员不需要操心内存的分配和回收。 在日常开发过程中,我们经常会接触到JDK、JRE: JDK(Java Development Kit)是java的核心,包含了JRE、Java工具(javac、java等)、java基础的类库...
2019-08-30 14:48:43 908
原创 2019阿里巴巴笔试编程题一
小明是一个数学家,他喜欢用数字给事务命名编号,他给自己编号为1,同时在2019年小明开办了一个农场,准备开始养母猪,他专门给农场的母猪用以下数列2,3,4,5,7,9,12,16,21,28,37,49,65,86,114,151…(f(n)=f(n-2)+f(n-3))进行命名。假设农场的母猪永远不会死,小母猪出生后3年后成熟,成熟后从第三年开始每年只会生一只母猪。第一年农场,有一只刚出生的小母...
2019-04-13 00:44:44 764
原创 JVM垃圾收集器分类
JVM垃圾收集器分类 新生代的垃圾收集器有Serial、ParNew、Parallel Scavenge以及G1;老年代的垃圾收集器有CMS、Serial Old、Parallel Old以及G1。如下图,如果两个收集器之间存在连线,就说明它们可以配合使用。 Serial收集器 serial收集器是一个单线程的收集器,使用”复制“算法,在进行GC操作(垃圾收集)时暂停其它所有工作线程,并且只使用...
2019-04-12 17:04:00 140
原创 GC算法
JVM垃圾收集算法 在介绍GC算法之前,要先了解一下对象在JVM中是如何进行内存分配的。对象所需的内存大小在类加载完成后便可以确定,为对象分配空间的任务等同于把一块确定大小的内存从Java堆中划分出来。 如果Java堆是绝对规整的,使用“指针碰撞”的分配方式。所有已经被占用的内存都放在一边,空闲的内存放在另一边,两块区域之间用一个指针作为分界点的指示器,每当需要进行内存分配时,将指针向空闲的内存区...
2019-04-11 13:54:41 125
原创 JVM中对象的回收判定
JVM中是如何判断对象已经死亡 引用计数算法 给每个对象添加一个引用计数器,每当有一个地方引用该对象,计数器值加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是已经可以回收的对象。这种算法实现简单,判定效率也很高,在大部分情况下是一个不错的选择。但是当对象之间相互循环引用时,引用计数算法便无法在上面这种情况下通知GC收集器回收它们。 ReferenceCountingGC objA ...
2019-04-10 13:35:37 105
原创 Java内存区域
Java内存区域Java虚拟机运行时数据区程序计数器Java虚拟机栈本地方法栈Java堆方法区 Java虚拟机运行时数据区 Java虚拟机运行时数据区主要有以下五个部分:程序计数器、Java虚拟机栈、本地方法栈、Java堆、方法区 程序计数器 程序计数器(Program Counter Register)是一块较小的内存空间,用于记录正在执行的虚拟机字节码指令的地址(执行java方法下),可以看作...
2019-04-09 11:27:12 227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人