`
szhnet
  • 浏览: 109444 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于CMS的一些学习

阅读更多
1.Full GC
在使用CMS的情况下,如果出现promotion failed或者concurrent mode failure,会触发Full GC。
下边通过代码来演示一下。
(1)promotion failed,代码如下:
public static void main(String[] args) throws Exception {
	BigObj o1 = new BigObj(1024 * 1024 * 2);
	BigObj o2 = new BigObj(1024 * 1024 * 2);
	BigObj o3 = new BigObj(1024 * 1024 * 2);
	System.out.println(">>> minor gc");
	BigObj o4 = new BigObj(1024 * 1024 * 2);
		
	TimeUnit.SECONDS.sleep(2);
		
	BigObj o5 = new BigObj(1024 * 1024 * 2);
	BigObj o6 = new BigObj(1024 * 1024 * 2);
	System.out.println(">>> promotion failed");
	BigObj o7 = new BigObj(1024 * 1024 * 2);
	TimeUnit.SECONDS.sleep(2);
}

private static class BigObj {
		
	private byte[] b;
		
	public BigObj(int c) {
		b = new byte[c];
	}
		
}

参数:
-Xms20m -Xmx20m -Xmn10m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+UseCMSInitiatingOccupancyOnly

我用的是sun JDK 1.6.0 u30 64位
在输出的日志中可以看到:
[GC 2.094: [ParNew: 6578K->6578K(9216K), 0.0000323 secs]2.094: [CMS: 6150K->8192K(10240K), 0.0145035 secs] 12728K->12449K(19456K), [CMS Perm : 3058K->3057K(21248K)], 0.0146291 secs] [Times: user=0.00 sys=0.02, real=0.01 secs]


(2)concurrent mode failure,代码同上,将参数改为:
-Xms20m -Xmx20m -Xmn10m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

在日志中可以看到:
[GC 2.105: [ParNew: 6562K->6562K(9216K), 0.0000330 secs]2.105: [CMS2.108: [CMS-concurrent-mark: 0.004/0.004 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
 (concurrent mode failure): 6150K->8192K(10240K), 0.0173765 secs] 12712K->12449K(19456K), [CMS Perm : 3058K->3057K(21248K)], 0.0175193 secs] [Times: user=0.02 sys=0.00, real=0.02 secs]


2.preclean
CMS GC在remark之前有个concurrent abortable preclean的阶段。
当Eden的占用超过2M时,执行此阶段,一直持续到Eden的占用超过50%时,才触发remark。当然也不会一直持续下去,如果超过5000毫秒Eden的占用仍未超过50%时,也会结束此阶段,开始触发remark。这3个参数可以通过-XX:CMSScheduleRemarkEdenSizeThreshold -XX:CMSScheduleRemarkEdenPenetration -XX:CMSMaxAbortablePrecleanTime 分别进行设置。
(1)Eden占用不超过2M的情况:
代码如下:
public static void main(String[] args) throws Exception {
	BigObj o1 = new BigObj(1024 * 1024 * 2);
	BigObj o2 = new BigObj(1024 * 1024 * 2);
	BigObj o3 = new BigObj(1024 * 1024 * 3);
	System.out.println(">>> minor gc");
	BigObj o4 = new BigObj(1024 * 1024 * 1);
	TimeUnit.SECONDS.sleep(2);
}

参数:
-Xms20m -Xmx20m -Xmn10m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps

在日志中可以看到:
2.116: [CMS-concurrent-preclean: 0.000/0.000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2.116: [GC[YG occupancy: 1615 K (9216 K)]2.116: [Rescan (parallel) , 0.0001575 secs]2.117: [weak refs processing, 0.0000058 secs] [1 CMS-remark: 7174K(10240K)] 8790K(19456K), 0.0002273 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]


(2)Eden的占用超过50%:
代码如下:
public static void main(String[] args) throws Exception {
	BigObj o1 = new BigObj(1024 * 1024 * 2);
	BigObj o2 = new BigObj(1024 * 1024 * 2);
	BigObj o3 = new BigObj(1024 * 1024 * 2);
	System.out.println(">>> minor gc");
	BigObj o4 = new BigObj(1024 * 1024 * 2);
	TimeUnit.SECONDS.sleep(2);

	BigObj o5 = new BigObj(1024 * 1024 * 3);
	TimeUnit.SECONDS.sleep(2);
}

参数同上:
在日志中可以看到:
2.106: [CMS-concurrent-abortable-preclean: 0.000/0.000 secs] [Times: user=0.00 sys=0.00, real=0.00 secs] 
2.106: [GC[YG occupancy: 5546 K (9216 K)]2.106: [Rescan (parallel) , 0.0001678 secs]2.106: [weak refs processing, 0.0000058 secs] [1 CMS-remark: 6150K(10240K)] 11696K(19456K), 0.0002596 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]


(3)Eden的占用仍未超过50%,持续时间超过5000毫秒:
代码如下:
public static void main(String[] args) throws Exception {
	BigObj o1 = new BigObj(1024 * 1024 * 2);
	BigObj o2 = new BigObj(1024 * 1024 * 2);
	BigObj o3 = new BigObj(1024 * 1024 * 2);
	System.out.println(">>> minor gc");
	BigObj o4 = new BigObj(1024 * 1024 * 2);
	TimeUnit.SECONDS.sleep(2);
		
	BigObj o5 = new BigObj(1024 * 1024 * 1);
	TimeUnit.SECONDS.sleep(7);
}

参数同上:
在日志中可以看到:
CMS: abort preclean due to time 7.210: [CMS-concurrent-abortable-preclean: 0.076/5.093 secs] [Times: user=0.02 sys=0.00, real=5.10 secs] 
7.210: [GC[YG occupancy: 3498 K (9216 K)]7.210: [Rescan (parallel) , 0.0002051 secs]7.210: [weak refs processing, 0.0000054 secs] [1 CMS-remark: 6150K(10240K)] 9648K(19456K), 0.0002727 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]

如果增加参数:-XX:CMSMaxAbortablePrecleanTime=3000
日志变为:
CMS: abort preclean due to time 5.127: [CMS-concurrent-abortable-preclean: 0.044/3.024 secs] [Times: user=0.01 sys=0.00, real=3.02 secs] 
5.127: [GC[YG occupancy: 3498 K (9216 K)]5.127: [Rescan (parallel) , 0.0001886 secs]5.127: [weak refs processing, 0.0000058 secs] [1 CMS-remark: 6150K(10240K)] 9648K(19456K), 0.0002634 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]


另外我试了一下CMSScheduleRemarkEdenPenetration参数貌似不管用啊
0
0
分享到:
评论

相关推荐

    CMS学习资料,精心整理

    【CMS学习资料,精心整理】 CMS,全称Content Management System,即内容管理系统,是一种用于创建、管理和发布数字内容的软件平台。它简化了网站建设和维护的过程,使得非技术人员也能通过图形用户界面进行操作,...

    帝国CMS学生学习知识点总结作文试题练习题考试资讯网站源码 带手机版

    帝国CMS学生学习知识点总结作文试题练习题考试资讯网站源码 带手机版 帝国CMS《学习》模板,简洁大气访问快,带一个漂亮体验好的手机端,中小学生知识点总结、试题、练习题、考试资讯、作文大全,学习方法技巧等,百度...

    帝国CMS仿《问答库》题库问答学习平台完整打包源码+采集,知识付费网站模板

    帝国CMS仿《问答库》题库问答学习平台完整打包源码+采集,知识付费网站模板 源码名称:仿《问答库》题库问答学习平台模板 知识付费网站源码 开发环境:帝国cms 7.5 安装环境:php+mysql 学历考试等各类题库以及一些...

    关于CMS的一些疑问1

    - CMS可以作为学习资料的共享平台,通过发布文章、文档等方式,鼓励团队成员分享学习心得,促进共同进步。 7. **技术发展趋势** - 随着Web技术的发展,服务器型的档案系统和CMS成为了主流,替代了过去的文件夹...

    简单CMS 学习型

    2. **页面编辑**:除了文章,CMS还提供静态页面的创建和管理,用于构建网站的各个部分,如首页、关于我们、联系我们等。 3. **媒体管理**:一个有效的媒体库管理功能是必要的,用户可以上传、分类、预览和管理图片...

    帝国CMS中小学生学习模板学生知识点总结试题练习题考试资讯网站源码

    帝国CMS中小学生学习模板学生知识点总结试题练习题考试资讯网站源码 帝国CMS《学习》模板,简洁大气访问快,带一个漂亮体验好的手机端, 中小学生知识点总结、试题、练习题、考试资讯、作文大全,学习方法技巧等, 百度...

    CMS32F033用户手册_V1.01(1)_CMS32M53XX_CMS32F033ss24_CMS32F033C程序_cms

    CMS32F033C程序是指CMS32F033的固件库或示例代码,手册可能包含了一些基本的应用实例和API函数说明,便于开发者快速上手。 总的来说,《CMS32F033用户手册》是开发基于CMS32F033的电子产品的必备资料,无论是硬件...

    一些cms项目。c#的

    【标题】"一些cms项目。c#的"指的是基于C#编程语言开发的Content Management System(内容管理系统)项目。这些CMS系统通常用于构建和管理网站,提供了一套方便的后台工具,让非技术人员也能轻松编辑和发布内容。 ...

    CMS系统,很好的学习资料

    【压缩包子文件的文件名称列表】中,"PCHome_download.html"可能是一个下载页面的HTML源代码,它可能包含了关于这个CMS实例的介绍、安装指南或是下载链接。而"NJJIME223.ZIP"则是一个ZIP压缩文件,通常用于存储多个...

    什么是cms以及学习了解cms的意义是什么

    ### 什么是CMS以及学习了解CMS的意义 #### 一、CMS的概念与作用 CMS,全称为Content Management System(内容管理系统),是一种被广泛应用于网站建设和管理的软件工具或平台。它的核心功能在于提供一个易于操作的...

    ASP非常值得学习分析的CMS源码

    这个"ASP非常值得学习分析的CMS源码"显然是一款基于ASP技术的Content Management System(CMS)系统,CMS允许用户无需深入编程知识就能管理网站内容。 首先,我们要了解ASP的基本概念。ASP是在IIS(Internet ...

    帝国CMS7.5仿《问答库》题库问答学习平台网站源码 带手机版

    帝国CMS7.5仿《问答库》题库问答学习平台网站源码 带手机版 开发环境:帝国cms 7.5 安装环境:php+mysql 学历考试等各类题库以及一些常见的普通练习的题目题库供大家查询。 特色功能: 1、同步生成WAP 2、带...

    苹果cms火车头接口.zip_MAXCMS接口_maxcms采集接口_苹果CMS火车_苹果cms api调用_苹果cms采集

    "使用说明.txt"是关于如何使用这些接口和模板的文档,可能包括了配置接口、调用API以及导入WPM文件的步骤和注意事项。正确理解和使用这份文档对正确实现数据采集和整合至关重要。 在实际应用中,通过苹果CMS和...

    08CMS网站内容管理教程

    ### 08CMS网站内容管理教程知识点概览 ...以上是关于08CMS网站内容管理教程中提到的主要知识点及操作流程,这些功能和设置能够帮助网站管理员更好地管理网站内容,提高用户体验,并且保障网站的安全性和稳定性。

    千锋渗透测试学习专用文章管理系统php-cms网站源代码

    千锋网络安全渗透测试Web架构安全分析章节配套的一个网站源码(cms.zip),用于安全渗透学习,名称为:文章管理系统。使用前需要先配置数据库,导入mysql文件。 这个网站仅用于千锋网络安全学习使用,内容来源网络,...

    AspCms2.0.1下载

    此外,通过学习系统的结构和API,开发者可以创建插件,进一步扩展系统的功能。 7. **维护与支持**:开源项目通常依赖社区的支持,AspCms2.0.1也不例外。用户可以在论坛或社区中寻找帮助,解决遇到的问题,或者与...

    CMS 系统-bug很多,仅供学习参考

    在本案例中,"CMS 系统-bug很多,仅供学习参考" 暗示我们正在处理一个可能存在大量错误或不足的CMS系统,可能不适合商业使用,但对那些想要了解CMS工作原理或进行学习研究的人来说具有一定的价值。"CMS B2B"则表明这...

    [CMS程序]Hippo CMS 6.05.06_hippo-cms-v6.05.06.zip

    总的来说,通过深入学习和分析Hippo CMS 6.05.06的源码,学生不仅可以巩固Java和JSP的基础知识,还能了解企业级CMS系统的架构和工作原理,这将对他们的专业技能提升大有裨益。同时,这样的实践经历也能为他们进入...

    支持杰奇cms在Liunx下可视化采集数据带语音视频教程 支持船说cms.zip

    “CMS”标签表明这个教程是关于内容管理系统(Content Management System)的,特别是杰奇CMS和船说CMS。CMS是一种用于创建、编辑和管理网站内容的软件平台,通常包括模板设计、用户权限管理、数据存储等功能。通过...

    we7 CMS 源代码

    7. **集成第三方服务**:考虑到现代网站的复杂性,We7 CMS可能已经预先集成了一些常见的第三方服务,如社交媒体分享、支付网关、邮件服务等。 在学习We7 CMS源代码的过程中,你可以深入了解ASP.NET框架的使用,包括...

Global site tag (gtag.js) - Google Analytics