自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 垃圾收集器

Serial收集器(一般用于客户端)串行收集器是最古老,最稳定以及效率高的收集器,可能会产生较长的停顿,只使用一个线程去回收。新生代、老年代使用串行回收;新生代复制算法、老年代标记-压缩(整理);垃圾收集的过程中会Stop The World(服务暂停)。一个单线程的收集器,在进行垃圾收集时候,必须暂停其他所有的工作线程直到它收集结束。特点:CPU利用率最高,停顿时间即用户等待时间比较...

2018-11-13 18:06:40 288

原创 垃圾回收机制策略四(分代收集算法)

分代算法概述堆内存分为新生代和老年代,针对新生代和老年代不同的特点就采用分代收集算法就可以,就是说分代收集算法根据内存的分代选择不同的垃圾回收算法,针对内存回收率比较高的内存区域(比如新生代)采用复制算法,内存回收率比较低的(比如老年代)采用标记-整理算法。新生代对象朝生夕死,对象数量多,只要重点扫描这个区域,那么就可以大大提高垃圾收集的效率。另外老年代对象存储久,无需经常扫描老年代,避免...

2018-11-12 17:40:45 505

原创 垃圾回收机制策略三(标记整理算法)

标记整理算法概念标记整理算法也叫标记压缩算法。由名字就可以看出先标记在整理,也就是第一个过程和标记清除算法的第一个过程一样。然后是整理,最后在清除。也可以叫做标记-整理-清除算法。标记整理算法在标记清除算法之上解决内存碎片化(删不干净)。针对老年代进行回收的,也就是针对回收效率不高,回收的垃圾较小的情况。标记整理算法图示 清除(红色)的向右边去,不用清除的向左边去,最后清除...

2018-11-12 17:11:27 2551

原创 垃圾回收机制策略二(复制算法)

概念解决标记清除算法的效率问题复制算法主要针对java堆(新生代)图示反复执行这个过程,虽然效率问题解决,但出现新的问题。内存区域只用一半,导致严重浪费为了解决浪费,我们把新生代分为三部分。如果Eden不够了,会使用Survivor。这个Survivor类似于上图中的两个空间,上图中的两个空间都是Survivor。这样使用的话内存不会浪费太多,始终有90%的空间是可以用...

2018-11-12 16:47:55 394 1

原创 垃圾回收机制策略—(标记清除算法)

概念该算法主要有两个阶段。1. 标记阶段:找到所有可访问的对象,做个标记2. 清除阶段:遍历堆,把未被标记的对象回收图示一般是根据可达性分析法把垃圾对象标记起来,然后在进行清除。应用场景:该算法一般应用于老年代,因为老年代的对象生命周期比较长。两大问题:效率问题,空间问题。内存区域会出现越来越多的不连续区域(碎片化),这就导致当我们分配一个大空间的时候,空间不连...

2018-11-12 16:00:54 1462

原创 判断java对象是否是垃圾对象的两种方法

前言判断对象为垃圾对象的方法为:引用计数法和可达性分析法。Object object = new Object(); // 不是垃圾对象object = null; // 此时为垃圾对象System.gc(); // 提示给gc进行回收垃圾,只是提示而已,不代表立即进行回收finalize() ...

2018-11-10 18:33:18 2941

原创 从虚拟机的角度看java对象的创建

一、前言创建对象有多种方式,最直观的方式就是通过new关键字创建对象。通过new创建的对象存储在java的堆中。二、对象的创建过程java创建过程要经过下图的6个步骤,我们所能看到的是new 类名和调用对象的初始化方法,中间的四个是虚拟机内部所执行的,对于开发者来讲它屏蔽了。将分配的内存初始化为零值就是创建完对象后,基本类型都有默认值,抽象数据类型默认值为null。Init方法...

2018-11-10 17:40:28 202

原创 java内存结构

java内存模型与java内存结构Java内存模型与Java内存结构是两个不同的概念。当讨论到多线程中,首先想到的是java内存模型(参考我之前的博客java内存模型)。java内存结构分析下图为java内存结构。 java堆java堆是java虚拟机所管理的内存中最大的一块,是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例(ne...

2018-11-10 16:13:01 240

原创 影响java线程安全的三个因素

java的线程安全性线程安全性:当多个线程访问某个类时,不管运行时环境采用任何调度方式或者这些进程将如何交替执行,而且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。线程安全性主要体现在三个方面:原子性:提供了互斥访问,同一时刻只能有一个线程对它进行操作可见性:一个线程对主内存的修改可以及时的被其他线程观察到。有序性:一个线程观察...

2018-11-09 14:09:02 1329

原创 java内存模型

java内存模型下图就是java内存模型,但是一般讨论的时候不会画这个图,一般画的是java内存模型抽象结构图(在下文)。Thread Stack就是java内存模型抽象结构图中的本地内存,Heap就是java内存模型抽象结构图中的主内存。接下来介绍下图中两个线程内存分配的概念。java里的堆是运行时的数据区,堆是由垃圾回收来负责的,堆的优势是可以动态的分配内存大小,生存期也不必事先告...

2018-11-09 13:09:55 4155 1

原创 线程池及其运行原理

前言首先从结构说起 然后线程池的参数 最后在结合代码简单分析new Thread 弊端        第一:每次new Thread 新建对象,性能差        第二:线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资源导致死机或OOM        第三:缺少更多的功能,如更多执行、定期执行、线程中断。什么是线程池Java中的线程池是运用场景最多...

2018-11-07 16:39:14 346

原创 Failed to instantiate No default constructor found; nested exception is java.lang.NoSuchMethodExcept

从网页接受参数,参数多的情况下一般会定义一个类,来装这些参数,比如UserParam这个类就是装网页里面转过来的id、username、telephone等信息。但是会发现在修改的时候会报如下错误。报错信息如下:org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.mmall...

2018-11-06 15:38:00 4047

原创 2018全国高校大数据技能赛解决方案

写这个算是记录一下吧,把解决的思路和常用套路总结一下,特别适合刚入门的拿来练手,因为数据有很明显的规律且分布极其不平衡。同时也方便小伙伴们参加下一届,也祝小伙伴能取得更好的成绩。比赛的地址是:全国高校大数据应用创新大赛,有三个比赛 ,分别是技能赛,创意赛和企业命题赛。我参加的是技能赛一个多分类,企业命题赛是一个nlp也是分类。具体的可以到上方地址查看。我强烈建议在有机器的情况下参加企业命题赛,...

2018-11-02 11:44:30 3365 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除