- 博客(9)
- 资源 (3)
- 收藏
- 关注
原创 string,stringbuffer与StringBuilder的区别
最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正。 这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方...
2018-12-30 16:48:01
50
原创 java内存区域与内存溢出异常
概述 java程序员将内存控制的权利交给了虚拟机,如果不了解虚拟机是如何运行的,那么一旦出现内存泄漏和溢出方面的问题,排查错误将会是一项艰难的工作。运行时数据区域 java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干数据区域。这些区域都有各自的用途,以及创建和销毁的时间。java虚拟机管理的内存将会包含以下一个区域:方法区,虚拟机栈,本地方法栈,堆,程序计数...
2018-12-30 16:37:07
59
原创 内存分配与回收策略
对象优先在eden分配大多数情况下,对象优先分配到新生代Eden中,当Eden中没有足够的空间的时候,虚拟机将发起一次minor GC。如果放不下,将会放到survivor,还不够大,将会放到老年代中。大对象直接进入老年代大对象直接放到老年代中,可以通过-xx:pretennresizethreshold参数进行设置,令大于这个值得对象直接存到老年代中。这个参数只对serial和par...
2018-12-30 16:16:32
283
原创 垃圾收集器
serial收集器serial收集器是历史最悠久的。serial收集器是单线程,当开始工作的时候,暂停所有正在执行的程序,然后执行垃圾收集。这点是很难接受的。但是在客户端使用的时候,它的有点是简单高效的。parnew收集器 parnew收集器就是serial收集器的多线程版本,并没有多少创新之处。是需要运行在服务器模式下的首选。有一个与性能无关,但是很重要的原因,就是除了se...
2018-12-30 16:15:15
41
原创 hotspot的算法实现
枚举根节点 枚举根节点的时候,执行系统必须停下来。但是虚拟机不需要一个不漏的去检查。虚拟机有办法直接知道哪些地方存在对象引用。在Hotspot中使用的是oopmap的数据结构。安全点 Hotspot没有为每条指令生成oopmap,如果生成,将会产生大量的资源浪费,只是在特定的位置记录下来,这些位置称为安全点。安全点的选定有基本上是以能否让程序长时间执行为标准。这里有两种方案...
2018-12-30 16:14:04
146
原创 垃圾收集算法
标记-清除算法缺点:1.效率不高;2.空间碎片太多。复制算法 为了解决效率问题,就有了复制算法。复制算法就是将内存分配为两块空间,当其中一个进行垃圾收集完成后,将剩下的复制到另外一块,同时清除掉当前内存中的所有信息。缺点就是内存被分为两部分,导致可以使用的内存区域减少。标记--整理算法 标记整理算法是在标记清除算法的基础上来的,前面都一样,先进行标记,但是,在标记整...
2018-12-30 16:12:23
65
原创 对象已死么
垃圾回收前需要知道哪些对象需要被收集,就需要知道哪些对象是死了还是活的。下面就是知道哪些对象是死是活的算法。引用计算法 引用计数算法是每次使用一个对象的时候就加1,不使用后就减1,为0了,就说明这个对象死了。但是java中没有使用引用计数算法,因为java中存在着循环引用的问题,所以不行。可达性分析算法 通过一系列称为GC roots的对象作为起始点,开始搜索下...
2018-12-30 16:10:33
92
转载 迅雷工作原理
迅雷是一款新型的基于P2SP技术的下载软件,这里的S指的是SERVER,就是在P2P的基础上增加了对SERVER的资源下载,也就是说P2SP是一种能够同时从多个服务器和多个节点进行下载的技术,因此迅雷的下载速度会比只能从服务器下载(P2S)或只能从节点下载(P2P)的软件速度要更快。简单说一下上面的东西,都说BT伤硬盘,其实从上面可以看出现在的迅雷和BT的核心技术都是P2P技术,甚至迅雷还要比BT...
2018-12-10 00:02:15
1428
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝