![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 58
小刘新鲜事儿
这个作者很懒,什么都没留下…
展开
-
Java中Comparable和Comparator有什么区别?
Comparable字面意思是“具有比较能力”,Comparator字面意思是“比较器”。原创 2023-08-25 16:45:09 · 599 阅读 · 0 评论 -
JVM垃圾回收器
根据JVM不同版本的迭代,我们从最古老的垃圾回收器谈起,分别是早期的Serial和Serial Old,中期的Parallel Scavenge及Parallel Old,过渡期的ParNew和CMS,以及现在的G1,未来的ZGC。如果你的虚拟机频繁的切换手中的用户工作,把更多的时间用来做GC工作,吞吐量就下降了。也叫Serial Young或Serial New,是一个工作在新生代的垃圾回收器,所以一般会有一个搭档负责老年代的垃圾回收,叫Serial Old,这种垃圾回收器是单线程的,不支持并发。原创 2023-06-28 23:04:28 · 151 阅读 · 0 评论 -
Java垃圾搜集算法和垃圾回收算法
垃圾回收主要针对的是JVM的堆内存,分为新生代和老年代。按照以前的叫法,还有一个永久代,它在方法区里保存了class信息、静态变量、常量池等。从jdk-1.8开始,方法区的实现发生了一些变化,取消了永久代的概念,多出了一个叫做元空间的概念。在内存上独立了出来,跟老年代不再是物理上连续的,直接使用了JVM的内存。这样会使得内存溢出的可能性进一步减小,空间大小变得更容易扩展。与此同时,方法区也将一部分数据转移了出去,比如类的静态变量、字符串常量池等都放到了堆内存当中。原创 2023-06-28 18:47:39 · 832 阅读 · 1 评论 -
初步认识Java垃圾回收算法
首先在一区创建这些对象,然后去打标记,标记是否需要被删除,等到一区快满了的时候,并不将标记对象删除,而是将不需要删除的对象复制到二区,并且是紧凑复制,这样避免了内存碎片,需要删除的就不复制到二区了。每一次Young GC,如果对象活下来了,它的年龄就会加1,直到它满了6岁,就不往S区复制了,直接到Old区了。等到E区快满了之后,对E区对象进行打标,将不需要删除的对象复制到S0区,之后将E区和S1区的对象全部删除。等下次E区快满了之后,再将S0区和E区的对象全部打标,将不需要删除的对象全部复制到S1区。原创 2023-06-28 16:59:54 · 514 阅读 · 0 评论 -
JVM内存模型
栈:存储函数运行过程中的一些临时变量,存储对象的地址,指向堆区的对象(栈,本地方法栈,程序计数器都是线程私有的,意思是每个线程在运行的时候会单独开辟这样一份内存)方法区:存储一些静态的方法或变量static,类加载器classLoader等全局的数据信息。本地方法栈:存储C++的native方法。堆:存对象(堆区,方法区是全局共享的)程序计数器:指向程序当前运行的位置。原创 2023-06-27 23:19:01 · 85 阅读 · 0 评论 -
Integer和int的区别?为什么要设计封装类?
隐藏了实现细节,对使用者更加友好,只需要调用对象提供的方法,就可以完成对象的操作。① 之所以要对基本数据类型设计一个对应的封装类型,是因为Java本身是一门面向对象的语言,对象是Java操作的基础单元,我们时时刻刻都在创建对象,也随时都在使用对象。② 很多时候,在传递数据时,需要用到对象类型,比如ArrayList,HashMap这些集合,只能存储对象类型,从这一点来说,封装类型存在的意义就很大。③ Integer作为一个对象类型,封装了一些方法和属性,我们可以利用这些方法来操作数据。为什么要设计封装类?原创 2023-05-20 11:21:33 · 543 阅读 · 0 评论