- 博客(9)
- 收藏
- 关注
原创 深拷贝和浅拷贝
深拷贝和浅拷贝一、基本类型和引用类型在内存上的存储区别内存空间一般分为Java栈区、堆区、方法区、本地方法栈、程序计数器,而基本类型和引用类型一般存储在Java栈区和堆区中,其中堆区中,又有常量池。public static void main(String[] args){ int num = 4; int[] arr = {1,2,3}} num为局部变量,且是基本类型int类型的数据,故而直接存储在Java栈中arr 是一个数组,是一个引用类型的数据,所以将数据
2021-08-17 19:11:21
543
原创 JVM——四种引用类型
JVM——四种引用类型传送门GC垃圾回收类加载机制运行时内存分配一、强引用把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到, JVM也不会回收。因此强引用是造成 Java内存泄漏的主要原因之一。二、软引用软引用需要用 SoftReference 类来实现,对于只有软引用的对象来说,当系统内存足够时它不会被回收,当系统内存空间不足时它会被回收。软引用通常用在对内存敏感的程序中
2021-08-16 19:07:21
558
原创 JVM——GC垃圾回收
JVM——垃圾回收传送门类加载机制四种引用类型运行时内存一、如何确定垃圾引用计数法在java中,如果要操作对象,则必须用引用进行。因此,我们可以通过引用计数来判断一个对象是否可以回收。即一个对象如果没有任何与之关 联的引用,也就是说他们的引用计数都不为 0,则说明对象不太可能再被用到,那么这个对象就是可回收对象。根可达算法由于引用计数法要进行循环引用,当有很多个对象需要判断时i,运算量很大,所以java使用了可达性分析的方法。通过一系列的“GC roots” 对象作为起点搜索
2021-08-10 20:19:53
280
原创 JVM——运行时内存
JVM——运行时内存传送门垃圾回收类加载机制四种引用类型java堆从GC的角度可以细分为:新生代(Eden区、ServivorFrom 区和ServivorTo区),老年代和永久代(java8中,永久代被“元数据区”(元空间)所取代)。新生代用来存放新生的对象。由于要频繁的创建对象,所有会频繁地触发MinorGC进行垃圾回收。新生代分为Eden区(伊甸园)和Servivor区(生存区),Servivor区里边分为ServivorTO区和ServivorFrom区。Eden区新
2021-08-10 18:53:53
272
原创 Java排序算法——插入排序
Java排序算法——插入排序(Insertion Sort)传送门冒泡排序选择排序简述插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。算法描述(设有n个元素)构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。第一轮排序时,第二个元素和第一个元素进行排序。第二轮排序时,第三个元素从第二个元素开始比较,往前走,找到自己的位置,并插入。…一共进
2021-08-09 22:20:09
1126
原创 Java排序算法——选择排序
Java排序算法——选择排序(Selection sort)传送门冒泡排序插入排序简述选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。算法描述(设有n个元素)从第一个元素开始,比较所有未排序的元素,并标记最小(大)元素,将最小(大)元素与未排序的第一个元素进行交换。第一轮排序时
2021-08-09 21:33:42
1105
原创 Java排序算法——冒泡排序
Java排序算法——冒泡排序(Bubble Sort)传送门选择排序插入排序简述冒泡排序(Bubble Sort)是一种简单直观的排序算法。它一次比较两个元素,如果他们的顺序错误就把他们交换过来,重复地进行直到没有元素再需要交换。这个算法的名字由来是因为越小的元素会经由交换慢慢"浮"到顶端。算法描述(设有n个元素)从第一个元素开始,比较相邻的元素,如果前一个比后一个大(小),则进行交换。第一轮排序时,第一个元素与第二个元素对比大小并判断是否交换;结束后,第二个元素和第三个元素对比大小
2021-08-09 21:13:46
297
原创 JVM——类加载机制和双亲委派模型
类加载器和双亲委派模型1. 什么是类加载器在java语言中,类(class)只有被加载到JVM中才能被运行。当一个程序要运行时,JVM会将编译生成的.class文件加载到内存中去。这个加载的过程就是有类加载器(ClassLoader)实现的。#mermaid-svg-hGdNBAbBssBQOcKo .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;col
2021-08-08 22:19:27
244
原创 Linux(Ubuntu)由浅入深
写在前面首先,大家要知道我们为什么要学习Linux。通常对于一个项目而言,在开发期间,使用Windows居多,因为windows方便且适配度更高;而项目的上线必须是在Linux系统或Unix系统或其子系统。而对于用户来讲,个人通常使用Windows系统,方便用户操作;而企业用户则两者都会选择使用。Ubuntu可以说是Linux的发行版,接下来我们一起来学习Ubuntu的使用。加粗样式一、什么是Linux,他的特点是什么Linux,是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统
2021-08-01 21:55:06
1556
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人