授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
Mybatis generator mapper文件重新生成不会覆盖原文件
shuangyueliao:[reply][/reply]可以这样,设置断点的调试级别为thread,而不是all,那样只有设置了断点的接口才会卡住。进一步,设置断点的condition,让接口只对你的访问有效,对其它人无效。那样,就可以实现不影响其它用户的情况下进行调试
如果说垃圾回收算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现,java虚拟机实现规范中对垃圾收集器应该如何实现并没有任何规定,因此不同厂商、不同版本的虚拟机提供的垃圾收集器存在很大的差异,接下来我们主要介绍一下HOTSPOT虚拟机中的几种垃圾收集器。这个虚拟包含的收集器如下图:
上图中7中作用于不同分代的收集器,如果两个之间存在连线,就说明他们可以搭配使用。收集器所处于的区域,则代表它是属于新生代收集器还是老年代收集器。
大家看名字就知道这是一个 单线程的收集器,但它的“单线程”并不仅仅说明它只会使用一个CPU或者一条收集线程去完成垃圾回收工作,更重要的是它在进程垃圾回收的时候,必须暂停其他所有的工作线程(Stop The World),直到它收集结束。在用户不知情的情况下,暂停了用户所有的线程,这听起来实在是不可思议。那么这个线程是不是现在就被放弃使用了。 并不是这样,该收集现在仍然是运行在Client模式下的虚拟机的默认新生代垃圾收集器。该收集器的运行过程如下:
ParNew收集器其实就是serial收集器的多线程的版本,除了使用多线程进行垃圾收集之外,其余的行为包括控制参数和收集算法,STW,对象分配规则,回收策略 等都与Serial收集器完全一样,在实现上两个收集器也共用了很多的代码。
虽然ParNew收集器和Serial收集器没有太多的创新之处,但是他却是 很多运行在Server 模型下的虚拟机中首先新生代 收集器,其中一个与性能没有关系的但是 很重要的一个原因是,目前除了Serial 收集器 外,目前只有它能与CMS收集器配合工作。
Parallel Scavenge 收集器也是 新生代收集器,它也是采用的复制算法,又是并行的多线程收集器,看上去和ParNew收集器差不多,但是这两者有很大的差别。
1、Parallel Scavenge 收集器追求CPU吞吐量,能够在较短时间内完成垃圾收集任务,因此适合没有交互的后台计算,而ParNew:追求降低用户停顿时间,适合交互式应用。
吞吐量 = 运行用户代码时间 / (运行用户代码时间 + 垃圾收集时间)
追求高吞吐量,可以通过减少 GC 执行实际工作的时间,然而,仅仅偶尔运行 GC 意味着每当 GC 运行时将有许多工作要做,因为在此期间积累在堆中的对象数量很高。单个 GC 需要花更多的时间来完成,从而导致更高的暂停时间。而考虑到低暂停时间,最好频繁运行 GC 以便更快速完成,反过来又导致吞吐量下降。
Serial Old收集器是Serial收集器的老年代版本,同样是单线程收集器, 使用“标记-整理”算法。这个收集器的意义也是在client模式下使用。如果在Server模式下,那么它主要由两大 用途:一种是在JDK1.5之前版本中与Paralle Scavenge收集器搭配使用,另一种用途是作为CMS收集器的后备预案,在并发收集发生Concurrent model failure时使用。
Parallel Old收集器是Parallel收集器的老年代版本, 使用多线程和“标记-清除算法”。这个收集器是在JDK1.6才开始提供的,再次之前新生代收集器 Parallel Scavenge收集器处于一个比较尴尬的地位,因为新生代选择了Parallel Scavenge收集器老年代只能选择Serial Old收集器。由于Serial Old在性能上的拖累,使用了Parallel Scavenge收集器也未必能在整体应用上获得吞吐量最大化的效果,由于单线程的老年代收集中无法充分利用服务器的多CPU的处理能力,在老年代很大并且硬件条件比较高级的环境,这种组合的吞吐量甚至不一定有ParNew+CMS的组合给力。
CMS垃圾收集器是一种以 获取最短回收 停顿时间为目标的收集器。目前 很大一部分的java应集中在 互联网或者B/S系统服务端上。CMS收集器是基于“标记-清除”算法实现的,它的运作过程分为下面几个部分:
初始标记:Stop The World,仅使用一条初始标记线程对所有与 GC Roots 直接关联的对象进行标记。
标记线程,与用户线程并发执行。此过程进行可达性分析,标记出所有废弃对象。速度很慢。
重新标记:Stop The World,使用多条标记线程并发执行,将刚才并发标记过程中新出现的废弃对象标记出来。
并发清除:只使用一条 GC 线程,与用户线程并发执行,清除刚才标记的对象。这个过程非常耗时。
CMS是一款优秀的收集器,它的主要优点已经体现出来了:并发收集,低停顿,Sun公司的一些官方文档也称之为并发低停顿收集器。当然,CMS收集器也并不是 一个十全十美的收集器,它的缺点主要包括 下面几个方面:
G1 是一款面向服务端应用的垃圾收集器,它没有新生代和老年代的概念,而是将堆划分为一块块独立的 Region。当要进行垃圾收集时,首先估计每个 Region 中垃圾的数量,每次都从垃圾回收价值最大的 Region 开始回收,因此可以获得最大的回收效率。
从整体上看, G1 是基于“标记-整理”算法实现的收集器,从局部(两个 Region 之间)上看是基于“复制”算法实现的,这意味着运行期间不会产生内存空间碎片。
一个对象和它内部所引用的对象可能不在同一个 Region 中,那么当垃圾回收时,是否需要扫描整个堆内存才能完整地进行一次可达性分析?
并不!每个 Region 都有一个 Remembered Set,用于记录本区域中所有对象引用的对象所在的区域,进行可达性分析时,只要在 GC Roots 中再加上 Remembered Set 即可防止对整个堆内存进行遍历。
如果不计算维护 Remembered Set 的操作,G1 收集器的工作过程分为以下几个步骤:
HotSpot 虚拟机提供了多种垃圾收集器,每种收集器都有各自的特点,虽然我们要对各个收集器进行比较,但并非为了挑选出一个最好的收集器。我们选择的只是对具体应用最合适的收集器。
全国大学生创新创业实践联盟-创新创业-按序学习:all:商业模式设计过程:顶层设计,具体化设计,组织化设计。商业模式评价准则:1,客户价值实现的程度:该模式能够在多大程度上实现创业团队原本拟定为客户创造并传递的价值2,客户价值实现的可靠性:该商业模式能在多大程上为客户可靠的提供拟定的价值3,客户价值实现的效率:该商业模式为客户创造与传递的效率,即是价值创造和价值传递两个效......
(备份一下)第一章 单元测试1、多选题:设计3.0是以满足什么要求为目标?选项:A:生态环保B:功能需求C:物质和精神需求D:多样化,个性化答案: 【生态环保;物质和精神需求】2、单选题:以下哪项关于设计教育的发展趋势有误?选项:A:设计人才教育不需要改革B:非学位专业项目也呈现了上升趋势C:本科和硕士专业还是主流的教育项目D:教学的主题、学制、还是教学的形式......
作者:Lucida微博:@peng_gong豆瓣:@figure9原文链接:关于本文把程序员所需掌握的关键知识总结为三大类19个关键概念,然后给出了掌握每个关键概念所需的入门书籍,必读书籍,以及延伸阅读。旨在成为最好最全面的程序员必读书单。前言Reading makes a full ma......
前言撰写这篇手册,并不简单的因为区块链是一个热门话题,更因为随着研究的深入,你会发现这是一个相当复杂的领域。关于这一话题的信息来源无外乎三个方面:技术文档和代码,商业机构的宣传,研究机构或个人的整理。但是每一种媒体都因其形式、渠道或作者而带有某种偏见。技术文档固然详细精确,但是不够通俗,视野也不够广阔;商业宣传必定带有一定的偏向性;而看似中立的研究机构和媒体也因其背后资助方或者受众市场的差异而......
耳常闻“大数据”,眼常看“大数据”,可就是不知如何用“大数据”!对于国内互联网创业者,要是能在这“信息大爆炸”的年头,从海量的“
”信息当中嗅出点端倪,找出个切入点,少不说能成为行业的佼佼者,一不小心还真有可能就会引领中国的未来呢!要在国内找出个像样的“大数据”初创公司,并非易事,但正是有这样的空白存在,才让人看到机遇。当然,在国内,妄图在政府身上应用大数据是很需要勇气的,但是,在私...
- 本文固定链接: http://fenleilaji.cc/?id=20510
- 转载请注明: admin 于 分类垃圾-环境保护从分类垃圾做起! 发表
《本文》有 0 条评论