
Java基础
文章平均质量分 59
jvm、多线程、数据结构、网络
叶小希
帅就完事了~
展开
-
Java序列化
序列化:将对象写入到IO流中 反序列化:从IO流中恢复对象 意义:序列化机制允许将实现序列化的Java对象转换位字节序列,这些字节序列可以保存在磁盘上,或通过网络传输,以达到以后恢复成原来的对象。序列化机制使得对象可以脱离程序的运行而独立存在。 使用场景:所有可在网络上传输的对象都必须是可序列化的,比如RMI(remote method invoke,即远程方法调用),传入的参数或返回的对象都是可序列化的,否则会出错;所有需要保存到磁盘的java对象都必须是可序列化的。通常建议:程序创建的每个Java原创 2021-12-10 17:43:54 · 355 阅读 · 0 评论 -
Java对象头
由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记字段用于增强对象功能,这些标记字段组成了对象头。1.对象头形式JVM中对象头的方式有以下两种(以32位JVM为例):1.1.普通对象|--------------------------------------------------------------|| Object Header (64 bits)原创 2021-12-10 10:39:09 · 2699 阅读 · 0 评论 -
For循环为什么不能对集合进行删除操作
增加for循环即foreach循环其实就是根据list对象创建一个iterator迭代对象,用这个迭代对象来遍历list,相当于list对象中元素的遍历托管给了iterator每次foreach循环时都有以下两个操作:iterator.hasNext(); //判读是否有下个元素 item = iterator.next();//下个元素是什么,并把它赋给item。1)在使用For-Each快速遍历时,ArrayList内部创建了一个内部迭代器iterator,使用的是hasNext和next(原创 2021-12-10 10:05:11 · 720 阅读 · 0 评论 -
WeakHashMap
WeakHashMap:键是weak引用。原创 2021-12-06 14:51:55 · 1456 阅读 · 0 评论 -
零拷贝机制
文章转自框架篇:Linux零拷贝机制和FileChannel - 潜行前行 - 博客园零拷贝的好处减少或避免不必要的CPU数据拷贝,从而释放CPU去执行其他任务 零拷贝机制能减少用户空间和操作系统内核空间的上下文切换 减少内存的占用内核空间和用户空间内核空间:Linux自身使用的空间;主要提供进程调度、内存分配、连接硬件资源等功能 用户空间:提供给各个程序进程的空间;用户空间不具有访问内核空间资源的权限,如果应用程序需要使用到内核空间的资源,则需要通过系统调用来完成:从用户空间切换原创 2021-11-19 15:25:52 · 145 阅读 · 0 评论 -
堆外内存释放
结论:堆外内存只有在fullgc的时候才能够回收掉。先看普通对象回收,这里设置jvm参数,便于触发和观察gc-verbose:gc -XX:+PrintGCDetails -server -Xms20m -Xmx20m实例代码a结果原创 2021-11-12 17:32:06 · 880 阅读 · 0 评论 -
虚引用解析
结论:堆外内存只有在fullgc的时候才能够回收掉。先看普通对象回收,这里设置jvm参数,便于触发和观察gc-verbose:gc -XX:+PrintGCDetails -server -Xms20m -Xmx20m实例代码public class Test3 { public static final ReferenceQueue<Bu> QUEUE = new ReferenceQueue<>(); public static final L原创 2021-11-12 16:12:06 · 1348 阅读 · 0 评论 -
Java的四种引用类型及使用理解
一:强引用我们一般创建对象的时候使用的都是强引用,强引用只要存在,对象就不会被gc回收,哪怕空间不够抛出oom。byte[] bt = new byte[10];二:软引用软引用是用来描述一些非必需但仍有用的对象。在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统则会回收软引用对象,如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常。这种特性常常被用来实现缓存技术。SoftReference<byte[]> sr = new SoftRefere原创 2021-10-30 19:40:30 · 243 阅读 · 0 评论 -
用案例探究java类加载器---类隔离
场景:使用不同的工作插件应对不同的工作内容,工作插件之间可能存在同种但是不同版本的jar包。我们需要如何做?(ps:底层理论知识在后面)一:尝试在一个模块里面引入不同jar包这里导入一个jar的两个版本,但是只有一个被导入进来了,所以说在一个模块(一个pom文件)中是无法使用多版本的jar包。所以我们需要使用多模块(多个pom文件)。二:多模块一个类加载器建立一个父类项目,里...原创 2021-10-30 19:29:39 · 267 阅读 · 0 评论 -
Java基础---垃圾回收
目录什么对象会被回收:什么时候会发起回收:回收算法:垃圾回收器:什么对象会被回收:什么时候会发起回收:回收算法:垃圾回收器:原创 2020-11-06 09:54:21 · 96 阅读 · 0 评论 -
Java基础---类加载器和类加载。
java不同类型的对象在虚拟机的存储位置不同。jvm内存模型大概分为5块。原创 2020-10-24 12:05:18 · 134 阅读 · 0 评论 -
Java基础---数据结构
Java创建的数据结构有Collection和Map。Collection分为List、Set、Queue。List:有序集合,顺序插入元素,允许相同的值ArrayList:底层由数组实现,可以认为ArrayList是一个可改变大小的数组。随着元素增加会自动扩容,扩容策略是每次增大50%。线程不安全。如果需要线程安全,可以使用List list=Collections.synchronizedList(new ArrayList());允许插入空值nullLinkList:底层由双向链表实现,线原创 2020-10-13 16:51:09 · 320 阅读 · 2 评论 -
Java基础---数据类型
Java数据分为基本数据类型和引用数据类型。基本数据类型有8种,分别是boolean 默认值 false、byte 默认值0、short 默认值0 、char 默认值0、int 默认值0、float 默认值0.0f、long 默认值0、double 默认值0.0d,boolean和byte一个字节,int、char两个字节,int和float四个字节,long和double八个字节。一个字节有八位。以int类型为例。int 4 字节 32位 范围-2^31~ 2^31-1。Java提供了基本类型的包装类,如原创 2020-10-10 13:15:24 · 97 阅读 · 0 评论 -
Java泛型及instance of关键字实现原理
Java泛型生效是在编译阶段,用来做一些参数上的约束。 public static void main(String[] args){ List list = new ArrayList<>(); list.add("111");//插入字符传 list.add(111);//插入整数 for(int i =0,len = list.size();i<len;i++){ //强制转化 输.原创 2020-06-06 11:30:59 · 1871 阅读 · 0 评论 -
Java的值传递or址传递?
关于值传递和址传递在Java中老是存在疑惑,网上帖子有说Java不存在址传递,也有人说Java二者都有。下面验证一下。经典函数SWAP(交换函数):关于交换函数大家都学过,在学C系列语言时,专门用来讲解址和值的区别.void swap(int a,int b){ int temp = a; a = b; b= temp;}public void ma...原创 2018-11-12 11:55:29 · 207 阅读 · 0 评论 -
Java基础---运行时数据区
了解JVM:JVM:Java Virtual Machine。是Java定义的抽象计算机,是Java的核心和基础,在Java编译器和os平台之间的虚拟处理器。它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机,可以在上面执行java的字节码程序。Java代码执行的过程:首先是.java文件经过编译器变为.class文件。然后交给虚拟机。虚拟机通过类加载器,将信息加载进来...原创 2018-10-18 11:05:49 · 171 阅读 · 0 评论 -
浅谈一下JMM:Java内存模型
JMM:(Java Memory Model)Java 内存模型。在谈及Java的内存模型,我们先了解一下什么是内存模型。内存模型:为了保证效率,每个线程都会有自己的缓存(直接读取主存速度太慢,CPU速度很快),但是如果多个线程操作一个数据的时候,线程都会把此数据放到自己的缓存中,这就可能导致缓存的不一致。例如 线程A修改数据data的值为1,线程B修改数据data的值为2.假设A先执行,...原创 2018-10-15 18:09:45 · 295 阅读 · 0 评论