- 浏览: 342176 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 499可回收对象的判定【收藏,非原创】 讲算法之前,我们先要 ... -
垃圾回收算法&STOP The World
2017-05-15 11:50 662目前所有的新生代gc都是需要STW的: Seria ... -
java-jvm-jhat
2017-05-14 21:04 559功能:可以分析jmap dump下的hprof文件 一般 ... -
java-jvm-jinfo
2017-05-14 20:57 687jinfo: 1、输出 当前java进程启动的相关配置信息 ... -
jvm-gc 日志解读【转载】
2017-05-14 17:34 486转载自:http://ifeve.com/useful-j ... -
大量异常带来性能的影响
2017-05-09 19:08 672感受大量构造异常带来的性能影响: package com; ... -
iotop&iostat (load高 IO高的问题排查)
2017-04-27 20:40 2113目标:使用iotop&top&jstack ... -
java-jvm-jstack-(监视器和锁的概念)
2017-04-06 16:52 6499下面这段jstack的栈信息里,有一个死锁 其中: T ... -
java-jvm-jstack-线程状态
2017-03-31 14:42 2619常见的线程状态: RUNNABLE:正在执行的线程 注 ... -
java-jvm-cpu (cpu)高问题排查
2017-03-28 21:07 33341、通过top命令发现 cpu高的进程 根据top命令, ... -
java-jvm-jstack
2016-08-05 11:07 2197jstack用于打印出给定的java进程ID或core fi ... -
java-jvm好文收集
2016-08-05 10:50 477非常详细GC学习笔记http://blog.csdn.ne ... -
java-jvm-jstat
2016-08-05 10:30 657stat用于监控基于HotSpot ... -
java-jvm-jmap(高内存排查)
2016-07-29 13:51 3810功能:打印出某个java进程(使用pid)内存内的,所有‘对象 ... -
java-jvm-jps
2016-07-29 13:42 473jsp -q 只显示pid,不显示class名称,jar文件 ... -
OutOfMemoryError溢出
2016-03-29 23:29 843Java堆溢出: java.lang.OutOfMemor ... -
ClassLoader-线程上下文类加载器
2015-04-16 10:54 1196线程上下文类加载器 :http://blog.csdn.net ... -
ClassLoader-热替换
2015-04-05 20:27 2751https://www.ibm.com/developer ... -
ClassLoader-学习
2015-04-05 19:03 1071相关文章:https://www.ib ... -
java-Runtime钩子回调
2015-03-09 22:09 2612----------~开篇分享一句话:【纸上得来终觉浅,绝知此 ...
相关推荐
垃圾回收器是实现这一机制的具体策略,本篇文章将详细介绍几种常见的垃圾回收器。 一、串行垃圾回收器 串行垃圾回收器采用单线程执行GC,因此在垃圾回收过程中,整个应用会被暂停,这种模式被称为"Stop-the-World...
【垃圾回收分类查询平台微信小程序端】是一款基于JavaScript开发的微信小程序应用,旨在提供便捷的垃圾分类查询服务。这款小程序能够帮助用户快速识别不同类型的垃圾,提高环保意识,推动垃圾分类的普及。通过微信小...
3. **垃圾回收器分类** - **Serial GC**:单线程的垃圾回收器,适用于小型应用和低CPU环境。新生代采用复制算法,老年代采用标记-整理算法。 - **Parallel GC**:多线程版本的Serial GC,提升了垃圾回收的效率,但...
通过互联网技术改造传统的垃圾回收模式,该项目的具体目标如下:解决居民通过传统手段找不到废品回收处理人员的烦恼;优化传统废品回收的流程,提高废品回收过程的处理速度;发布垃圾分类回收相关知识,提高居民的...
【垃圾分类回收小程序Demo】是一款基于移动端的应用程序,旨在提高公众对垃圾分类的认识并推动垃圾的有效回收。这款小程序的主要功能包括垃圾分类展示、相关信息文章的列表展示、文章详情查看以及发布回收请求等,为...
《基于STM32单片机的垃圾分类回收监测系统设计》 在当今社会,随着环保意识的日益增强,垃圾分类与回收已成为全球关注的重要议题。而基于STM32单片机的垃圾分类回收监测系统,正是科技进步与环保理念相结合的产物,...
通过对STM32单片机和ZigBee无线通信技术的应用,垃圾分类回收监测系统能够实现垃圾站点的智能化管理,提高垃圾处理的效率和准确性,同时减轻环卫工人的劳动强度,优化垃圾回收的流程。这不仅对环境保护有着积极的...
2. ParNew GC:Serial GC的多线程版本,常与CMS(Concurrent Mark Sweep)垃圾回收器配合使用,主要负责新生代的垃圾回收。 3. Parallel GC:与ParNew类似,但适用于老年代,同样采用多线程。 4. CMS GC:并发标记...
系统的核心是一个垃圾回收站,它接收各类垃圾,如铁铝罐、保特瓶和塑料,然后对这些垃圾进行分类存储。回收站的工作流程包括垃圾的到达、分拣、运输和储存。垃圾到达的时间间隔遵循正态分布,分拣过程则服从指数...
3. 垃圾投放点查询:显示附近的垃圾回收站位置,方便用户找到最近的投放点。 4. 回收预约:用户可以预约上门回收服务,减少不必要的出行。 5. 积分系统:根据用户投放垃圾的数量和质量,给予积分奖励,激励用户积极...
因此,了解垃圾回收器的工作原理、分类、优缺点以及如何调优它们,对于Java开发人员而言是至关重要的。 垃圾回收的主要目的是为了解决内存泄漏和非法内存访问的问题。Java中的垃圾回收机制是在对象不再被程序引用时...
总的来说,逆物流角度下的垃圾分类回收是一项系统工程,涉及政策制定、公众教育、技术支持和市场机制等多个层面。我国在这一领域仍有很大提升空间,需要加强垃圾分类教育,完善法规制度,提高回收设施的覆盖率,并...
在本项目“bbs.rar”中,我们关注的是如何利用Django框架来实现一个垃圾回收分类的Web应用。Django是一个高效且强大的Python Web开发框架,它提供了完整的解决方案,包括模型设计、数据库交互、URL路由、视图处理...
对于政府,需要统一协调智能化垃圾分类回收的发展,简化分类方式,强化宣传教育,设立有效的激励机制,确保法规执行,提高环保部门的工作透明度。 综上所述,互联网+垃圾分类回收的智能化发展模式为解决城市垃圾...
引入市场化机制,鼓励企业参与垃圾处理和资源回收。 2. 农村:考虑到农村实际情况,可推行适应性强、操作简单的分类模式,如厨余垃圾与其他垃圾两类;利用本地资源,发展小型化、分散化的处理设施;推广生态农业,...
针对生活垃圾回收存放装置设计,本文档介绍了以PLC(Programmable Logic Controller,可编程逻辑控制器)为核心的控制系统设计,这对于现代生活垃圾处理系统的设计具有重要意义。以下是根据文档内容总结的详细知识点...
1. **内存注册**:当分配新的动态内存时,将其注册到垃圾回收器中,记录分配的内存地址和大小。 2. **对象关联**:将分配的内存与使用它的对象关联起来,以便在对象析构时可以追踪其使用的内存。 3. **引用计数**...
3. **垃圾回收器设计**:设计一个垃圾回收器需要考虑如何追踪对象的可达性,确定哪些对象可以被安全地回收。这可能包括跟踪对象间的引用关系,使用标记-清除、复制、标记-整理或分代等算法。 4. **自定义new和...
10. **政策与法规**:垃圾回收物流仿真系统的设计还必须考虑当地的法规和政策,例如垃圾分类要求、排放标准和运营许可。 通过以上知识点,垃圾回收物流仿真系统设计不仅有助于提高城市环境卫生管理水平,还能促进...