- 浏览: 331623 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (212)
- spring (21)
- design pattern(java) (12)
- linux-shell (28)
- java-thread (20)
- java-collection (6)
- java-reflect (9)
- mysql (11)
- java-io (7)
- java-util&lang&io (3)
- algorithm (3)
- interview (2)
- tools-eclipse (2)
- tools-maven (1)
- web-script (1)
- java组建 (13)
- 博客收藏 (1)
- 架构设计与实践 (10)
- active-mq (6)
- java-jvm&性能&原理 (27)
- tomcat (2)
- flume (1)
- serialization (2)
- git (1)
- cache&redis (8)
- guava (1)
- zookeeper (3)
- socket&tcp&udp&http (6)
- test (1)
最新评论
-
bbls:
有用有用有用
java-jvm-jstack-(监视器和锁的概念) -
王新春:
小侠有点帅哦 写道此流怎么关闭新春这个实现 可以不关闭的,哈哈 ...
源码剖析之java.io.ByteArrayOutputStream -
小侠有点帅哦:
此流怎么关闭新春
源码剖析之java.io.ByteArrayOutputStream -
cumt168:
写的很好为什么初始化参数,年轻代-Xmn10M def new ...
jvm之内存申请过程分析 -
ronin47:
应该是跟共享域名思路差不多,根据cookie的key作判断
跨域:一种通过服务端解决跨域的实现
基础:
串行收集器:
DefNew:是使用-XX:+UseSerialGC(新生代(Serial收集器),老年代(Serial Old收集器)都使用串行回收收集器)
并行收集器:
-XX:+UseParNewGC(新生代使用并行收集器(ParNew收集器),老年代使用串行回收收集器(Serial Old))
-XX:+UseConcMarkSweepGC(新生代使用多线程收集器,老年代->CMS)。
-XX:+UseParallelOldGC(新生代,老年代都使用并行回收收集器)
-XX:+UseParallelGC(新生代使用并行回收收集器,老年代使用串行收集器)
garbage-first heap:是使用-XX:+UseG1GC(G1收集器)
搭配:
Serial收集器-年轻代
http://book.51cto.com/art/201107/278913.htm
[GC [DefNew:1986K->128K(2112K), 0.0011191 secs] 27809K->27808K(30528K), 0.0011425secs] [Times: user=0.00 sys=0.01, real=0.00 secs]
这个收集器是一个单线程的收集器,但它的“单线程”的意义并不仅仅是说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程(Sun将这件事情称之为“Stop The World”),直到它收集结束。
优点:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率
缺点:停顿时间长
ParNew收集器-年轻代
[GC [ParNew:1990K->132K(2112K), 0.0007742 secs] 24112K->24110K(30528K), 0.0007964secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
ParNew收集器除了多线程收集之外,其他与Serial收集器相比并没有太多创新之处,但它却是许多运行在Server模式下的虚拟机中首选的新生代收集器,其中有一个与性能无关但很重要的原因是,除了Serial收集器外,目前只有它能与CMS收集器配合工作。
CMS收集器
参数设置:-Xms30m -Xmx60m-Xmn10m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails
它运行在JAVA虚拟机的老年代中。
CMS收集器是基于“标记-清除”算法实现的
优点:并发收集、低停顿
缺点:因为占用了一部分线程(或者说CPU资源)而导致应用程序变慢,总吞吐量会降低,对CPU资源非常敏感,无法处理浮动垃圾,收集结束会产生大量空间碎片。
在并发标记和并发清除过程中,收集器线程都可以与用户线程一起工作,所以总体上来说,CMS收集器的内存回收过程是与用户线程一起并发地执行的
[GC [ParNew: 9112K->9112K(9216K), 0.0000185 secs][CMS: 47728K->51175K(51200K), 0.0184446 secs] 56840K->56814K(60416K), [CMS Perm : 2086K->2085K(12288K)], 0.0185255 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
http://blog.csdn.net/ffm83/article/details/42874653
http://book.51cto.com/art/201107/278920.htm
Parallel Scavenge收集器-年轻代
Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throughput)。所谓吞吐量就是CPU用于运行用户代码的时间与CPU总消耗时间的比值
停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户的体验;而高吞吐量则可以最高效率地利用CPU时间,尽快地完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。
Parallel Scavenge收集器还有一个参数-XX:+UseAdaptiveSizePolicy值得关注。这是一个开关参数,当这个参数打开之后,就不需要手工指定新生代的大小(-Xmn)、Eden与Survivor区的比例(-XX:SurvivorRatio)、晋升老年代对象年龄(-XX:PretenureSizeThreshold)等细节参数了,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或最大的吞吐量,这种调节方式称为GC自适应的调节策略(GC Ergonomics)
自适应调节策略也是Parallel Scavenge收集器与ParNew收集器的一个重要区别。
2016-03-29T21:20:53.647+0800: 100078.239: [GC [PSYoungGen: 421996K->4820K(567040K)] 1602649K->1187158K(1965184K), 0.0126840 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]
Parallel Old收集器-老年代
Parallel Old收集器是JAVA虚拟机中垃圾收集器的一种。和Serial Old收集器一样,工作在JAV虚拟机的老年代。这种垃圾收集器使用多线程和“标记-整理”算法。
在注重吞吐量及CPU资源敏感的场合,都可以优先考虑Parallel Scavenge加Parallel Old收集器。
[Full GC [PSYoungGen:3394K->3394K(6848K)] [ParOldGen: 50728K->50728K(51200K)]54122K->54122K(58048K) [PSPermGen: 2084K->2084K(12288K)], 0.0071480 secs][Times: user=0.00 sys=0.00, real=0.01 secs]
PSYoungGen total 6848K, used 3456K [0x0ad30000, 0x0b730000, 0x0b730000)
eden space 3456K, 100% used [0x0ad30000,0x0b090000,0x0b090000)
from space 3392K, 0% used [0x0b090000,0x0b090000,0x0b3e0000)
to space 3392K, 0% used[0x0b3e0000,0x0b3e0000,0x0b730000)
ParOldGen total 51200K, used 51176K [0x07b30000, 0x0ad30000, 0x0ad30000)
PSPermGen total 12288K, used 2105K [0x03b30000, 0x04730000, 0x07b30000)
ParOldGen表示是Parallel old在老年代进行回收;
Serial Old收集器-老年代
老年代
serial Old收集器是串行的进行垃圾回收
[GC [DefNew: 9108K->966K(9216K),0.0049332 secs][Tenured: 46824K->46893K(46920K), 0.0033687 secs] 47800K->47790K(56136K),[Perm : 2086K->2086K(12288K)], 0.0084489 secs] [Times: user=0.02 sys=0.00,real=0.01 secs]
Tenured表示是 serial old在老年代进行回收
串行收集器:
DefNew:是使用-XX:+UseSerialGC(新生代(Serial收集器),老年代(Serial Old收集器)都使用串行回收收集器)
并行收集器:
-XX:+UseParNewGC(新生代使用并行收集器(ParNew收集器),老年代使用串行回收收集器(Serial Old))
-XX:+UseConcMarkSweepGC(新生代使用多线程收集器,老年代->CMS)。
-XX:+UseParallelOldGC(新生代,老年代都使用并行回收收集器)
-XX:+UseParallelGC(新生代使用并行回收收集器,老年代使用串行收集器)
garbage-first heap:是使用-XX:+UseG1GC(G1收集器)
搭配:
Serial收集器-年轻代
http://book.51cto.com/art/201107/278913.htm
[GC [DefNew:1986K->128K(2112K), 0.0011191 secs] 27809K->27808K(30528K), 0.0011425secs] [Times: user=0.00 sys=0.01, real=0.00 secs]
这个收集器是一个单线程的收集器,但它的“单线程”的意义并不仅仅是说明它只会使用一个CPU或一条收集线程去完成垃圾收集工作,更重要的是在它进行垃圾收集时,必须暂停其他所有的工作线程(Sun将这件事情称之为“Stop The World”),直到它收集结束。
优点:简单而高效(与其他收集器的单线程比),对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,专心做垃圾收集自然可以获得最高的单线程收集效率
缺点:停顿时间长
ParNew收集器-年轻代
[GC [ParNew:1990K->132K(2112K), 0.0007742 secs] 24112K->24110K(30528K), 0.0007964secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
ParNew收集器除了多线程收集之外,其他与Serial收集器相比并没有太多创新之处,但它却是许多运行在Server模式下的虚拟机中首选的新生代收集器,其中有一个与性能无关但很重要的原因是,除了Serial收集器外,目前只有它能与CMS收集器配合工作。
CMS收集器
参数设置:-Xms30m -Xmx60m-Xmn10m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails
它运行在JAVA虚拟机的老年代中。
CMS收集器是基于“标记-清除”算法实现的
优点:并发收集、低停顿
缺点:因为占用了一部分线程(或者说CPU资源)而导致应用程序变慢,总吞吐量会降低,对CPU资源非常敏感,无法处理浮动垃圾,收集结束会产生大量空间碎片。
在并发标记和并发清除过程中,收集器线程都可以与用户线程一起工作,所以总体上来说,CMS收集器的内存回收过程是与用户线程一起并发地执行的
[GC [ParNew: 9112K->9112K(9216K), 0.0000185 secs][CMS: 47728K->51175K(51200K), 0.0184446 secs] 56840K->56814K(60416K), [CMS Perm : 2086K->2085K(12288K)], 0.0185255 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]
http://blog.csdn.net/ffm83/article/details/42874653
http://book.51cto.com/art/201107/278920.htm
Parallel Scavenge收集器-年轻代
Parallel Scavenge收集器的目标则是达到一个可控制的吞吐量(Throughput)。所谓吞吐量就是CPU用于运行用户代码的时间与CPU总消耗时间的比值
停顿时间越短就越适合需要与用户交互的程序,良好的响应速度能提升用户的体验;而高吞吐量则可以最高效率地利用CPU时间,尽快地完成程序的运算任务,主要适合在后台运算而不需要太多交互的任务。
Parallel Scavenge收集器还有一个参数-XX:+UseAdaptiveSizePolicy值得关注。这是一个开关参数,当这个参数打开之后,就不需要手工指定新生代的大小(-Xmn)、Eden与Survivor区的比例(-XX:SurvivorRatio)、晋升老年代对象年龄(-XX:PretenureSizeThreshold)等细节参数了,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或最大的吞吐量,这种调节方式称为GC自适应的调节策略(GC Ergonomics)
自适应调节策略也是Parallel Scavenge收集器与ParNew收集器的一个重要区别。
2016-03-29T21:20:53.647+0800: 100078.239: [GC [PSYoungGen: 421996K->4820K(567040K)] 1602649K->1187158K(1965184K), 0.0126840 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]
Parallel Old收集器-老年代
Parallel Old收集器是JAVA虚拟机中垃圾收集器的一种。和Serial Old收集器一样,工作在JAV虚拟机的老年代。这种垃圾收集器使用多线程和“标记-整理”算法。
在注重吞吐量及CPU资源敏感的场合,都可以优先考虑Parallel Scavenge加Parallel Old收集器。
[Full GC [PSYoungGen:3394K->3394K(6848K)] [ParOldGen: 50728K->50728K(51200K)]54122K->54122K(58048K) [PSPermGen: 2084K->2084K(12288K)], 0.0071480 secs][Times: user=0.00 sys=0.00, real=0.01 secs]
PSYoungGen total 6848K, used 3456K [0x0ad30000, 0x0b730000, 0x0b730000)
eden space 3456K, 100% used [0x0ad30000,0x0b090000,0x0b090000)
from space 3392K, 0% used [0x0b090000,0x0b090000,0x0b3e0000)
to space 3392K, 0% used[0x0b3e0000,0x0b3e0000,0x0b730000)
ParOldGen total 51200K, used 51176K [0x07b30000, 0x0ad30000, 0x0ad30000)
PSPermGen total 12288K, used 2105K [0x03b30000, 0x04730000, 0x07b30000)
ParOldGen表示是Parallel old在老年代进行回收;
Serial Old收集器-老年代
老年代
serial Old收集器是串行的进行垃圾回收
[GC [DefNew: 9108K->966K(9216K),0.0049332 secs][Tenured: 46824K->46893K(46920K), 0.0033687 secs] 47800K->47790K(56136K),[Perm : 2086K->2086K(12288K)], 0.0084489 secs] [Times: user=0.02 sys=0.00,real=0.01 secs]
Tenured表示是 serial old在老年代进行回收
发表评论
-
垃圾回收算法详解
2017-05-17 16:42 452可回收对象的判定【收藏,非原创】 讲算法之前,我们先要 ... -
垃圾回收算法&STOP The World
2017-05-15 11:50 620目前所有的新生代gc都是需要STW的: Seria ... -
java-jvm-jhat
2017-05-14 21:04 513功能:可以分析jmap dump下的hprof文件 一般 ... -
java-jvm-jinfo
2017-05-14 20:57 648jinfo: 1、输出 当前java进程启动的相关配置信息 ... -
jvm-gc 日志解读【转载】
2017-05-14 17:34 439转载自:http://ifeve.com/useful-j ... -
大量异常带来性能的影响
2017-05-09 19:08 637感受大量构造异常带来的性能影响: package com; ... -
iotop&iostat (load高 IO高的问题排查)
2017-04-27 20:40 2040目标:使用iotop&top&jstack ... -
java-jvm-jstack-(监视器和锁的概念)
2017-04-06 16:52 6427下面这段jstack的栈信息里,有一个死锁 其中: T ... -
java-jvm-jstack-线程状态
2017-03-31 14:42 2528常见的线程状态: RUNNABLE:正在执行的线程 注 ... -
java-jvm-cpu (cpu)高问题排查
2017-03-28 21:07 32911、通过top命令发现 cpu高的进程 根据top命令, ... -
java-jvm-jstack
2016-08-05 11:07 2159jstack用于打印出给定的java进程ID或core fi ... -
java-jvm好文收集
2016-08-05 10:50 388非常详细GC学习笔记http://blog.csdn.ne ... -
java-jvm-jstat
2016-08-05 10:30 600stat用于监控基于HotSpot ... -
java-jvm-jmap(高内存排查)
2016-07-29 13:51 3758功能:打印出某个java进程(使用pid)内存内的,所有‘对象 ... -
java-jvm-jps
2016-07-29 13:42 424jsp -q 只显示pid,不显示class名称,jar文件 ... -
OutOfMemoryError溢出
2016-03-29 23:29 797Java堆溢出: java.lang.OutOfMemor ... -
ClassLoader-线程上下文类加载器
2015-04-16 10:54 1115线程上下文类加载器 :http://blog.csdn.net ... -
ClassLoader-热替换
2015-04-05 20:27 2679https://www.ibm.com/developer ... -
ClassLoader-学习
2015-04-05 19:03 1020相关文章:https://www.ib ... -
java-Runtime钩子回调
2015-03-09 22:09 2554----------~开篇分享一句话:【纸上得来终觉浅,绝知此 ...
相关推荐
独占式(垃圾回收时,应用程序中的线程需要暂停)1.新生代串行回收器:复制算法2.老年代串行回收器:标记压缩算法二.并行回收器:GC线程多线程并发,独占式新生代P
通过互联网技术改造传统的垃圾回收模式,该项目的具体目标如下:解决居民通过传统手段找不到废品回收处理人员的烦恼;优化传统废品回收的流程,提高废品回收过程的处理速度;发布垃圾分类回收相关知识,提高居民的...
产品与服务:提供垃圾分类指导服务、垃圾回收服务、废品收购服务以及可回收物再利用服务。通过建立线上平台和线下回收网络,实现垃圾分类与资源回收的一体化服务。 定价策略:根据不同类型和规模的客户,制定相应的...
基于web的垃圾分类回收系统论文-java-文档-论文-基于web的垃圾分类回收系统文档论文: !!!本文档只是论文参考文档! 需要项目源码、数据库sql、开发文档、毕设咨询等,请私信联系~ ① 系统环境:Windows/Mac ② ...
一个“垃圾回收管理”类,具有在程序运行结束时能自动释放用new所分配的还未被delete所释的动态内存,避免出现“内存泄漏”。用C++做的
主要介绍了简单了解Java垃圾回收器的种类,具有一定借鉴价值,需要的朋友可以参考下。
按照垃圾回收价值设置分类垃圾桶 2.按作息时间规范用户投放 投放监控 1.垃圾重量 2.投放者身份 3.垃圾类型 分类收集 保洁员将不同类型的垃圾分类收集存放 回收处理 可回收物分别卖给回收公司 其他垃圾,掩埋,焚烧,...
为了满足半空间拷贝垃圾回收的实时性需求,克服在半空间拷贝回收过程中因大量的内存拷贝操作带来的时间开销方面的不足,提出了一种将对象分类并进行不完全拷贝的回收机制。针对大对象的生命周期较长及空间分布的连续...
2019 年 1 月 31 日,上海市十五届 人大二次会议表决通过《上海市生活垃圾管理条例》, 7 月 1 日正式实施, 上海市生活垃圾分类实行“有害垃圾、可回收物、湿垃圾、干垃圾”四分 类标准。定点定时投放,不分类不...
垃圾分类作为资源回收利用的重要环节之一, 可以有效地提高资源回收利用效率, 进一步减轻环境污染带来的危害. 随着现代工业逐步智能化, 传统的图像分类算法已经不能满足垃圾分拣设备的要求. 本文提出一种基于卷积神经...
Java是一种高性能、跨平台的面向...自动内存管理(垃圾回收): Java具有自动内存管理机制,通过垃圾回收器自动回收不再使用的对象,使得开发者不需要手动管理内存,减轻了程序员的负担,同时也减少了内存泄漏的风险。
本作品以RaspberryPi为主控制器,结合计算机视觉技术和传感器技术,实现对...为了帮助控制COVID-19的传播,我们开发了配备RaspberryPi的智能垃圾桶,该垃圾桶可以回收其他垃圾中的口罩,以减少SARS-COV-2二次传播的风险
智能垃圾分拣装置采用STM32作为 主 控 制 器,通过各种传感器自动检测垃圾种类;由执行机构将垃圾放入所对应的垃圾桶 中,并显示...该系统可帮助人们高效地分拣回收垃圾,能有效提高垃圾回收效率,提高资源的可回收性。
分类信息网源码,带商家黄页的分类信息网系统,会员可自助建站的分类信息网站程序,可根据浏览IP自动跳转分站的分类网站后台管理系统,供求信息网站源码,asp.net分类信息源码,生成html的分类信息站源码,此系统是基于asp...
政府采用多样化的强制措施或激励机制,推动 C 端用户垃圾分类习惯养成。近三年来, 政府将生活垃圾分类回收工作重新提上日程。2019 年 7 月 1 日,由上海人大指定的《上海 市生活垃圾管理条例》正式执行,将原本“可...
我建立了一个分类器,该分类器使用计算机视觉来确定垃圾是否可回收。 然后,此分类器为我构建的硬件设备提供动力,该设备会四处摆动以将垃圾丢到正确的位置。 __垃圾分类算法最初,在对分类器进行原型制作时,我...
【资源说明】 1、该资源包括项目的...本次垃圾分类挑战杯,目的在于构建基于深度学习技术的图像分类模型,实现垃圾图片类别的精准识别,大赛参考深圳垃圾分类标准,按可回收物、厨余垃圾、有害垃圾和其他垃圾四项.zip
针对日常生活混合收集垃圾的方式与陋习,为提高市民环保意识,提出了一种...设计结果表明该系统方案稳定可行,延时较短,容易扩展,可普及性高,适合城市小区应用,对垃圾分类信息统计与回收方案研究有一定的指导意义。
服务器应用程序将使用常见垃圾的图片来训练Watson Visual Recognition,以识别各种类别的废物,例如回收,堆肥或垃圾填埋场。 开发人员可以利用它来为自己的用例创建自己的自定义视觉识别分类器。 读者完成此代码...
图像分类的更多tricks(注意力机制 keras,TensorFlow和pytorch 版本等):2.大家如果对目标检测比赛比较感兴趣的话,可以看一下我这篇对目标检测比赛tricks的详细介绍:3.目标检测比赛笔记:增添内容已修改成本地...