在jvm学习中一点点学习了eclipse的优化.目录下有一个计算eclipse启动时间的插件,只要放到eclipse的plugin目录下就可以.
1 首先,java版本的升级可以带来性能的免费提升.比如从jdk5升级到jdk6.通过eclipse.ini中的-vm参数 ,修改了JVM路径,使用了jdk1.6 update21.但是报了一个out of memery..具体的原因是:永久代溢出.hotspot默认的永久代是64M,但是很明显eclipse这种大的工具来说64M的永久代根本不够.但是在使用jdk1.5的时候却不会出现内存溢出,原因在于,eclipse.ini中存在一个--launcher.XXMaxPermSize 256M 参数.当eclipse.exe运行在sun公司的虚拟机上的时候,就会自动把-XX:MaxPermSize=256m传入到jvm运行参数中,所以不会有溢出问题.但是问题在于,JDK1.6 Update21以后java.exe等命令的Company属性从 Sun变成了Oracle.eclipse就不识别这个参数,所以也不会把-XX:MaxPermSize=256m参数带过去,所以造成了永久代内存溢出的问题.
经测试,这个问题在eclipse3.6中已经解决.
2 经过测试jdk6对于eclipse的字节码验证比jdk5多了将近4s(这个具体的讨论可以见 www.iteye.com/topic/826542).考虑到eclipse还是比较靠谱的,所以我们可以去除字节码验证.添加 -Xverify:none
3 第三个调节的地方在于,尽量减少GC的次数.eclipse启动的full gc主要的原因在于 老年代和永久代的扩容.所以针对这个方面,可以固定老年代和永久代的内存大小..做法是 -Xms512m -Xmx512m -XX:PermSize=96m -XX:MaxPermSize=96m
由于我本机eclipse刚装,启动时间差不多是4.6s的样子.所以我个人设置这两个值效果并不是很明显(大概提升了0.1s).个人建议还是升级到96m的样子,因为根据我的这边看到的数字,永久代大小(permsize)大概是55m的样子.系统默认的最小值是64m.估计随便装几个插件或者工程就会造成扩容(注意eclipse.ini里面定义了,最大的permsize是256m)
还有一个地方在于,eclipse在启动的时候代码中显式的调用了几次gc(也就是显式的System.gc();).这样也会额外的增加gc的次数.所以,我们可以强制关闭显式gc.所以带上参数 -XX:+DisableExplicitGC
除了启动的时候,我们在使用eclipse编写代码的时候,我们也可以做一些优化来减少full gc的次数.因为一次full gc基本都要超过1s的,修改系统默认老年代gc频率,系统默认是老年代中内存占68%就进行一次full gc.我们可以增加.-XX:CMSInitiatingOccupancyFraction=85 这样就改成85%才full gc
4 优化代码编译.代码编译是一个非常耗时的任务.查看VisualVM 的参数看到,在全工程编译的时候其实CPU的占用并不高,这点可以利用,我们可以一边编译一边干其他事,对于这个应用来说,CMS收集器是最合适的.所以强制指定eclipse的垃圾收集器为CMS.-XX:+UseParNewGC -XX:+UseConcMarkSweepGC 注意,如果CPU不高的话,可以不考虑这个优化
最后总结一下
--设置最大的堆和最小堆大小.两者一样表示固定大小.这样可以防止老年代内存扩展造成额外的gc.当然也会多占一些内存.系统内存不足的慎用
-Xms512m
-Xmx512m
--加大年轻代内存.减少minor gc
-Xmn164m
--这个是永久代大小.默认是64M,增加到96M.固定大小,减少扩展造成的gc
-XX:PermSize=96m
-XX:MaxPermSize=96m
--去除字节码验证
-Xverify:none
--屏蔽显示调用gc.
-XX:+DisableExplicitGC
--关闭类垃圾回收,就可以消除由于多次装入和卸装同一个类而造成的开销
-Xnoclassgc
--指定最适合多任务并行的CMS垃圾收集器
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
--修改默认的触发老年代full gc的内存所占比..改成85%
-XX:CMSInitiatingOccupancyFraction=85
分享到:
相关推荐
发卡系统源码无授权版 带十多套模板
STM32F103系列PWM输出应用之纸短情长音乐——无源蜂鸣器
基于matlab开发的rvm回归预测 RVM采取是与支持向量机相同的函数形式稀疏概率模型,对未知函数进行预测或分类.rar
STM32工具 CubeMX 使用FreeRtos系统 基于lwRB通用环形缓冲区的串口非阻塞发送,程序使用printf,通过重定向fputc函数,将发送数据保存在FIFO中,可以在中断中调用printf,保证了系统的线程安全和中断安全,将发送任务放在线程中。LwRB有两个指针一个r读指,一个w写指针,底层采用原子操作,不需要用到锁,保证了线程安全,最大的好处是它是支持DMA的,为CPU减负。
EasyJF官网全站源码_easyjfcom_src.rar是一个针对计算机专业的JSP源码资料包,它包含了丰富的内容和功能,旨在帮助开发人员快速构建和管理网站。这个源码包基于Java技术栈,使用JSP(JavaServer Pages)作为前端页面渲染技术,结合了Servlet、JavaBean等后端组件,为开发者提供了一个稳定、高效的开发环境。通过使用这个源码包,开发者可以快速搭建一个具有基本功能的网站建设平台。它提供了用户注册、登录、权限管理等基本功能,同时也支持文章发布、分类管理、评论互动等常见内容管理操作。此外,源码包还包含了一些实用的辅助工具,如文件上传、数据导出等,方便开发者进行网站的维护和管理。在界面设计方面,EasyJF官网全站源码采用了简洁、易用的设计风格,使得用户可以轻松上手并进行个性化定制。同时,它还提供了一些可扩展的插件和模板,开发者可以根据自己的需求进行修改和扩展,实现更多的功能和效果。总之,EasyJF官网全站源码_easyjfcom_src.rar是一个功能强大、易于使用的计算机专业JSP源码资料包,适用于各类网站建设项目。无论是初学者还是有经验的开发者
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
基于matlab实现此压缩包包含语音信号处理中的语音变声代码加音频.rar
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
使用 Base64 编码来对 UUID(Universally Unique Identifiers) 存储在一些特定的场合被广泛的使用。使用 Base64 对比直接使用 UUID 进行存储来说能够更多的节约空间。 本文对这方面的相关内容和问题进行探讨。 在这里,使用 Base64 来对 UUID 进行存储,涉及到一些类型的转换的。Base64 是编码算法,在实际使用的时候我们更多会用到 Byte 数组的方式来进行编码的。这样我们就比较明确在对其进行 Base64 转换之前,我们应该要先干什么了。
Java网络爬虫(蜘蛛)源码.zip
这是Pandas基础学习
架构 主微控制器采用 STM32F103C8T6。 目前外设部分包括: 显示模块:0.96寸4针IIC通信协议的OLED模块 温湿度采集模块:DHT11 网络通信模块:ESP8266 报警模块:高电平触发的有缘蜂鸣器 其他:若干LED灯珠以及若干贴片按键 硬件端系统使用C语言编写
新版PHP无陌然在线云加密平台系统源码 带安装说明.rar新版PHP无陌然在线云加密平台系统源码 带安装说明.rar
近年来由于生活节奏的加快,好像每个人都被很多难以启齿的问题困惑,然而关于随意消费是大多数人头疼的问题,没有任何计划和筹备的情况下随意消费,导致现实生活中我们所称为的“月光族”。 当你逐渐了解自己的财务状况,就可以学着做简单的收支规划。大部分月光族的根源其实是缺乏规划,想买什么的时候就买了。并不是说规划不能随意买东西,规划的价值在于让你使用资金的效率最高。无论你用金钱换取的必需品,满足感或者快乐,都可以通过规划获得比较高的效率。 本记账系统是一个基于国内外电子商务网站的发展现状,采用B2C(Business to Consumers)模式开发的电子商务平台,它的价值所在对于那些随意消费性的人群能起到一个很大的警示作用,而且系统扩张性很强,能根据客户的不同需求进行快速改进。该系统采用B/S三层结构,服务器是Tomcat同时运用JSp技术进行动态页面设计,后台数据库是Oracle。
最新微信文章编辑器排版工具程序源码.rar最新微信文章编辑器排版工具程序源码.rar最新微信文章编辑器排版工具程序源码.rar
前台方面(经营者用户): 系统首页:是用这户端的系统首页,首页的最上方有投诉建议、进入后台等选项,页面下方可以根据商品编号进行商品状态的实时查询,十分方便快捷。 投诉建议:用户可以在这个系统的这个板块给系统开发者留言,向开发者反应系统使用者的疑难问题,并提出自己相应的改进建议。 商品入库:生鲜商品经营者可以在商品入库界面,对一定数量的生鲜商品进行入库操作,确保库房内的每一件商品都能追根溯源,保障产品质量安全。 商品出库:用户在商品出库界面,可以对指定的商品进行出库操作,输入出库数量,点击提交即可。 商品列表:用户还可以在商品列表的界面中,对自己旗下生鲜商品的入库、出库情况进行实时查看。 后台方面(管理者用户): 商品管理:商品管理是系统后台的核心功能,在这个功能模块中,系统管理员可以对平台内生鲜商品的出入库指令进行严格的审核,并且可以对商品的归属地追根溯源。 经营者管理:拥有最高管理权限的系统管理员,可以连接到数据库,对经营者类别、名称、经营许可证编号等基础信息进行审核。 投诉建议管理:管理员还可以对所有注册用户的投诉建议,进行删除或者回复操作,通过这种方式,与注册用户进行线上交流。
MyBatis 是一个持久层框架,它允许用户在 XML 文件中编写动态 SQL 语句。MyBatis 的动态 SQL 功能非常强大,它允许开发者根据运行时的条件动态地生成 SQL 语句。这使得 MyBatis 能够灵活地处理各种复杂的查询需求。 MyBatis 动态 SQL 通过使用 <if>、<choose>、<when>、<otherwise>、<trim>、<set> 等标签来实现。附件中是一些常见的动态 SQL 标签及其用法,通过组合使用这些标签,可以编写出非常灵活和强大的 SQL 语句,以适应不同的查询和更新需求