iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何缩短eclipse启动JVM优化的时间
  • 498
分享到

如何缩短eclipse启动JVM优化的时间

2023-06-17 09:06:52 498人浏览 安东尼
摘要

如何缩短eclipse启动JVM优化的时间,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。追加: 首先要声明一下,这个案例在<深入理解JVM虚拟机>这本书中也提到过.

如何缩短eclipse启动JVM优化的时间,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

追加: 首先要声明一下,这个案例在<深入理解JVM虚拟机>这本书中也提到过. 这本书是我曾经学习JVM的***本书.里面关于Heap的优化思想,来源于此.建议大家想学JVM原理的,可以找来此书看看. 写这篇文章,是因为最近在给一个社交网站服务器做调优,突然觉得我机器上的eclipse跑的比较多,所以顺便优化下eclipse.至于基于 WEBSphere服务器的性能调优,这回涉及到更多的工具和方法,会在以后的文章中看到.

最近自从eclipse安装了很多插件以后,启动变得非常的慢,每次启动,要消耗近半分钟.这是不正常的. 今天决定好好优化一下.

我所使用的eclipse是Eclipse Java EE IDE for Web Developers 3.8版本. 跑在Mac OSX上, SSD+8G RAM, 这么高性能的机器竟然不能秒开eclipse, 这太说不过去了. 哦,还有我使用的JVM是oracle的HotSpot,来自于jdk1.6 64bit.

首先,在优化前,让我们看看eclipse启动时,JVM的各项性能指标. 因为我并不能准确的判定eclipse的启动完成时间, 所以我只能说大约事件.

首先启动JDK自带的JVM性能监视工具,在java\bin的目录下,有一个jvisualvm,它是绑定在JDK中的visualvm.双击启动 visualvm. 然后启动eclipse, 在eclipse启动完成以后,使用visualvm的查看eclipse的Visual GC情况, 如图:

如何缩短eclipse启动JVM优化的时间

上图中说明在eclipse的启动过程中,JIT对字节码进行了向机器码的编译,花去了22秒的时间.Class加载花去了10秒的时间,Minor GC发生了72次,花去0.64秒,Full GC发生了12次,仅仅花去了61毫秒.

我们再去MBean选项查看,发现新生代使用ParNew垃圾收集器,而老年代使用的是CMS垃圾收集器.

如何缩短eclipse启动JVM优化的时间

总上情况看出,由于MAC的性能比较好,所以垃圾回收并没有消耗太多的时间,并且CMS+ParNew本身就是并行垃圾回收,不会造成用户程序太多的停顿. 时间主要消耗在了JIT的即时编译和Class加载上了.

首先要优化的就是class加栽.因为eclipse这个工具是一个成熟的工具,经过了这么多人的验证,所以我充分信任eclipse的代码,允许 eclipse的代码在加载的时候,跳过字节码验证. 关闭字节码验证的方法是在vm的args中加入参数 -Xverify:none. 对于eclipse来说,找到eclipse.ini, 加入-Xverify:none. 让我们再重启一下eclipse,看看class加载时间是否减小. 再次启动,发现class加载事件缩小到7秒,比之前少了3秒.

然后优化的是JIT的时间. 在使用eclipse编写程序时,主要是文本编辑,编译和运行,JIT虽然可以带给我们高性能,但是JIT在编译机器码的时候,却要消耗很多的时间. eclipse对项目的编译和运行本身就很慢,切运行时是启动一个新的java进程,跟eclipse本身无关,所以,我可以接受抛弃JIT编译器,而只是用JVM解释器执行字节码所带来的效率降低. 这样可以去除JIT编译的时间. 做法如下,在eclipse.ini中加入vm的参数 -Xint, 意思是只使用解释器. 让我们来看看结果:

如何缩短eclipse启动JVM优化的时间

JVM编译器时间变成了0, 一下减掉20秒. 但是,由于缺少了运行时的即时编译优化方案,代码的运行时间变长了, eclipse的整体启动时间慢了更多,超过了30秒. 由此可见,JIT是多么有用的一项技术.所以禁止JIT的尝试失败了.我们把之前的参数-Xint去掉.

哦,对了,我还装了很多的插件,尤其是Android开发插件.启动的时候对插件的激活也会花去很多时间. 屏蔽插件激活的方法: windows -> Preferences, 输入 “startup”, 点击 “Startup and Shutdown”, 把不需要的插件勾掉. 此外,还需要关掉不必要的validation,方法为:Windows -> Preferences -> Validation. 只选你需要的.

做完以上工作,我发现eclipse启动稍微快了一些. 掐着秒表计算的花了大约15秒.

***,再优化一下GC和堆栈吧.虽然说,GC已经表现的很好了,都没有超过1秒,但是GC的频率如此高,说明JVM的内存的分配是不合理的.为此,我们需要重新对JVM内存进行划分. 为了对JVM的内存进行合理分配,我们需要了解eclipse启动过程中,GC到底发生了什么事情. 打开gc log的方法如下:

想eclipse.ini的vm参数中添加

-XX:+PrintGCDetails

-Xloggc:/users/joey/Documents/gc.log

启动eclipse,生成gc.log, 打开log,进行分析.

***次Minor GC发现,新生代的大小约为20M. 堆的大小约为40M. 再接下来的GC中,新生代始终没有扩容.这说明,新生代的大小合适.
0.720: [GC 0.720: [ParNew: 17024K->2112K(19136K), 0.0099529 secs] 17024K->2324K(38848K), 0.0100285 secs] [Times: user=0.03 sys=0.00, real=0.01 secs]

***次发生Full GC时,发现老年代已经扩容到约93M,而永生代扩容到约128M
67.213: [Full GC (System) 67.213: [CMS: 57969K->57877K(93124K), 0.3563491 secs] 62179K->57877K(112260K), [CMS Perm : 80490K->80392K(128708K)], 0.3565176 secs] [Times: user=0.36 sys=0.00, real=0.36 secs]

而直到***一次GC, 老年代占用也没超过125M,永生带占用也没有超过125M. 但他们的占用空间均超过了100M. 由此,我们有理由规定一个初始堆大小. 最终,通过分析,我给eclipse.ini添加了如下几个参数:

-server  -Xverify:none  -XX:PermSize=128m  -XX:MaxPermSize=256m  -Xms256m  -Xmx512m  -Xmn40m  -Xss2m

-server是让JVM以server模式运行,加重JIT的优化作用,由于eclipse是经常开着不关,在server模式下,JIT会随着运行的时间,把字节码更深刻的变成成机器代码.加快运行速度.

-Xverify:none, 跳过对字节码的验证.

PermSize永生带设置为128M,堆的初始大小设置为256M,新生代站了40M. 每个线程栈大小设为2M.

在这种设置下,Full GC已经完全消失,但还是剩下了20次左右的Minor GC,大约花掉0.3秒, 这是可以接受的. 如果为了完全消除GC而把新生代的空间设大,那也是一种内存的浪费. 重启eclipse,启动时间已经落在了15秒之内.如图:

如何缩短eclipse启动JVM优化的时间

看完上述内容,你们掌握如何缩短eclipse启动JVM优化的时间的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 如何缩短eclipse启动JVM优化的时间

本文链接: https://www.lsjlt.com/news/288066.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何缩短eclipse启动JVM优化的时间
    如何缩短eclipse启动JVM优化的时间,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。追加: 首先要声明一下,这个案例在<深入理解JVM虚拟机>这本书中也提到过....
    99+
    2023-06-17
  • 如何缩短Win7的启动时间
    如何缩短Win7的启动时间      1.运行msconfig命令      打开屏幕左下角的Windows 7开始菜单...
    99+
    2023-06-04
    Win7 时间 启动
  • Linux启动时间的优化技巧
    本篇内容主要讲解“Linux启动时间的优化技巧”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux启动时间的优化技巧”吧!一台电信设备的一次小故障或关机,即使只是几秒钟,都可能会对无数互联网...
    99+
    2023-06-05
  • 电脑中如何通过优化注册表缩短应用程序响应时间
    这篇文章给大家分享的是有关电脑中如何通过优化注册表缩短应用程序响应时间的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 1、按 Win + R 组合键,打开运行,或者按桌面左下角的开始菜单,在打开的菜单项...
    99+
    2023-06-27
  • Win7程序未响应时间过长如何缩短程序的响应时间
      Windows用户常常会遇到“程序未响应”这样的系统提示,要么手动强行终止,要么继续等待期响应,不过大多数程序出现此问题时,很难再活过来了。这个问题在win7中也是常常遇到,要怎么样才能缩短程...
    99+
    2023-06-02
    Win7 程序响应时间 时间 过长 程序 响应
  • Springboot如何使用具体化类和配置来缩短单元测试时间
    这篇文章主要介绍了Springboot如何使用具体化类和配置来缩短单元测试时间,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体化类和配置来缩短单元测试时间我们在写完业务代码...
    99+
    2023-06-25
  • 如何缩短页面的渲染时间让页面跑的更快些
    这篇文章主要介绍“如何缩短页面的渲染时间让页面跑的更快些”,在日常操作中,相信很多人在如何缩短页面的渲染时间让页面跑的更快些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何缩短页面的渲染时间让页面跑的更快些...
    99+
    2023-06-08
  • 如何查询linux启动的时间
    可以使用以下命令查询Linux启动的时间:1. 使用`uptime`命令:直接在终端输入`uptime`命令,它会显示系统启动时间以...
    99+
    2023-09-13
    linux
  • PHP API 在 Linux 上的响应时间如何优化?
    PHP 是一种广泛使用的编程语言,常用于 Web 开发。在 Web 开发中,API 是一个非常重要的组成部分。一个好的 API 不仅需要具备良好的功能性,还需要具备高性能和高效率。本文将介绍如何在 Linux 系统上优化 PHP API ...
    99+
    2023-11-08
    api 响应 linux
  • Python numpy如何优化LeetCode算法题的响应时间?
    LeetCode算法题是程序员面试中常见的考察方式,也是提高算法能力的有效途径。然而,随着题目难度的提高,算法的执行时间也会随之增加,这时候我们就需要寻找优化算法的方法,以提高算法的执行效率。本文将介绍如何使用Python numpy库来...
    99+
    2023-06-05
    numpy 响应 leetcode
  • PHP中的异步编程:如何优化HTTP响应时间?
    PHP作为一种脚本语言,通常被用来构建Web应用程序。然而,当这些应用程序需要处理大量的请求时,HTTP响应时间就成为了一个关键问题。在这种情况下,异步编程技术可以提供一个有效的解决方案。 异步编程是一种将代码分成多个独立部分的技术,这些部...
    99+
    2023-10-03
    http 异步编程 响应
  • Android应用中无法设置闹钟的启动时间如何解决
    这期内容当中小编将会给大家带来有关Android应用中无法设置闹钟的启动时间如何解决,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Android开发中,alarmManager在5.0以上系统,启动时间设...
    99+
    2023-05-31
    android roi
  • 如何使用 Spring Boot 和索引优化 ASP.NET MVC 的响应时间?
    近年来,随着互联网的高速发展,许多企业和个人都在不断地追求更好、更快、更稳定的网站性能。然而,网站性能的提升并不是一件简单的事情。在本文中,我们将介绍如何使用 Spring Boot 和索引优化 ASP.NET MVC 的响应时间。 一、S...
    99+
    2023-08-11
    索引 响应 spring
  • Python打包缓存:如何优化编程算法的运行时间?
    当我们编写程序时,一个常见的问题是运行时间太长。这可能是因为我们的算法不够优化,或者是因为我们没有利用计算机的资源。其中,缓存是一种优化算法运行时间的有效方法。在本文中,我们将讨论Python中的缓存机制及其如何优化算法的运行时间。 一、...
    99+
    2023-08-28
    打包 缓存 编程算法
  • ASP编程算法面试:如何优化算法的时间复杂度?
    在 ASP 编程中,算法是至关重要的。它们可以帮助我们解决各种问题,从字符串匹配到图形渲染。不过,好的算法不仅需要正确性,还需要高效性。在这篇文章中,我们将探讨如何优化 ASP 编程算法的时间复杂度。 什么是时间复杂度? 在开始讨论优化算...
    99+
    2023-09-28
    编程算法 面试 path
  • C#通过同步和异步如何实现优化做早餐的时间
    本篇内容介绍了“C#通过同步和异步如何实现优化做早餐的时间”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!概述一天之计在于晨,每天的早餐也是必...
    99+
    2023-06-21
  • 你是否知道如何使用Python和Unix来优化Laravel的加载时间?
    当今互联网时代,网站的加载速度对于用户体验来说至关重要。Laravel作为一款流行的PHP框架,也面临着优化加载时间的挑战。本文将介绍如何使用Python和Unix来优化Laravel的加载时间。 一、优化Composer自动加载 Comp...
    99+
    2023-10-14
    unix load laravel
  • 如何在Django API中使用Python编程算法优化API的响应时间?
    Django是一种基于Python语言的Web框架,它被广泛应用于构建Web应用程序。在Django应用程序中,API是一种非常常见的方式,它使得应用程序可以被其他应用程序或者服务所使用。然而,随着API的使用越来越广泛,我们需要考虑如何优...
    99+
    2023-06-29
    编程算法 django api
  • ASP异步编程和Laravel响应:如何优化Web应用的响应时间?
    随着Web应用程序在日常生活中的广泛应用,优化Web应用程序的性能已成为一个重要的问题。其中一个主要的性能指标是响应时间,它涉及到应用程序的整体速度和用户体验。在本文中,我们将介绍ASP异步编程和Laravel响应,这两种方法可以帮助我们...
    99+
    2023-08-18
    异步编程 laravel 响应
  • PHP 中的 NumPy 和 NumPy 中的 PHP:您该如何选择正确的工具来优化响应时间?
    在现代 Web 应用程序中,响应时间是至关重要的。越快的响应时间意味着更好的用户体验和更高的转化率。因此,优化 Web 应用程序的响应时间成为了每个开发人员的首要任务之一。在这篇文章中,我们将探讨两个流行的工具,NumPy 和 PHP,以...
    99+
    2023-08-30
    numy numpy 响应
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作