• Eclipse设置、调优、使用


    一般在不对eclipse进行相关设置的时候,使用eclipse总是会觉得启动好慢,用起来好卡,其实只要对eclipse的相关参数进行一些配置,就会有很大的改善

    1.eclipse.ini配置参数

    Eclipse的启动由$ECLIPSE_HOME/eclipse.ini控制,如果$ECLIPSE_HOME 没有被定义,则Eclipse安装目录下的默认eclipse.ini会生效。


    eclipse.ini是一个文本文件,其内容相当于在Eclipse运行时添加到 Eclipse.exe之后的命令行参数。

    eclipse.ini 不仅仅可以设置eclipse的堆栈内存大小,也可设置默认使用的jdk版本。

    其格式要求:

    1:所有的选项及其相关的参数必须在单独的一行之内

    2:所有在-vmargs之后的参数将会被传输给JVM,所有如果所有对Eclipse 设置的参数必须写在-vmargs之前(就如同你在命令行上使用这些参数一样)

    3.所有的选项及其相关的参数必须在单独的一行之内,若参数形如“项 值”形式,中间的空格需要换行书写,如果值中有空格则需要用双引号括起来

    堆(Heap)和非堆(Non-heap)内存
    按照官方的说法:“Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。

    堆内存分配:
    JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;
    JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。
    默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;
    空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。
    因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。

    非堆内存分配:
    JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;
    由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。

    JVM内存限制(最大值)
    首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。

    设置VM参数导致程序无法启动主要有以下几种原因:
    1)参数中-Xms的值大于-Xmx,或者-XX:PermSize的值大于-XX:MaxPermSize;
    2) -Xmx的值和-XX:MaxPermSize的总和超过了JVM内存的最大限制,比如当前操作系统最大内存限制,或者实际的物理内存等等。
    说到实际物理内存这里需要说明一点的是,如果你的内存是1024MB,但实际系统中用到的并不可能是1024MB,因为有一部分被硬件占用了。

    -startup
    plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.1.R36x_v20100810
    -product
    org.eclipse.epp.package.jee.product
    --launcher.defaultAction
    openFile
    --launcher.XXMaxPermSize  (PS:注意前面是两个连接线,其和XX:MaxPermSize基本一致,唯一的区别是前者是eclipse.exe启动时设置的参数,后者是eclipse所使用的JVM中的参数,可以用#注释掉一个。)
    256M 
    -showsplash
    org.eclipse.platform
    -vm
    E:javajava11jdk-11.0.8injavaw.exe(创建项目时的默认jdk版本)
    -vmargs
    -Dosgi.requiredJavaVersion=1.7  (PS:告诉Eclipse在 Launch 的时候至少要使用JRE1.7)
    -Xms256m
    -Xmx1024m
    (服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。) -Dfile.encoding=UTF-8 ( PS:eclipse默认的编码方式为操作系统内核的编码方式,在中文Windows下自然就是GBK,但一般的text file为UTF-8格式,造成冲突,因此需要重新定义JVM的编码方式。) -Dsun.jnu.encoding=UTF-8 (PS: sun.jnu.encoding 影响文件名的创建,而 file.encoding 则影响到文件内容。)

    扩展阅读:https://blog.csdn.net/dietime1943/article/details/54315971

    机器物理内存16GB (8G内存请将参数减半)

    (一般8G的 一般情况   -Xmx1024m 就够了 )

    eclipse版本:IBM Rational® Software Architect Designer for WebSphere(Version:9.5)
    如果非IBM Rational 的eclipse、请将下列标有[IBM]标识的参数用'#'注掉或将其删除、

    -vm
    jdk/jre/bin/javaw.exe
    -startup
    plugins/org.eclipse.equinox.launcher_1.3.0.v20140415-2008.jar
    --launcher.library
    plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.200.v20150204-1316
    -install
    C:/IBM/SDP
    -vmargs
    -Xquickstart
    -XX:+PrintGCDetails
    -XX:+PrintGCDateStamps
    #-Xloggc:C:	emplogsgcgc.log
    -Xverbosegclog:C:	emplogsgcgc.log
    -Xms4096m
    -Xmx4096m
    #-Xgcpolicy:gencon
    #-Xmn1536m
    -Xmns1024m
    -Xmnx1024m
    -Xscmx512m
    -Xshareclasses:name=IBMSDP_%u
    -XX:PermSize=1024m
    -XX:MaxPermSize=4096m
    -Xverify:none
    -XX:CompileThreshold=100
    -XX:ParallelGCThreads=4
    -XX:+DisableExplicitGC
    -XX:+UseParNewGC
    -XX:+UseConcMarkSweepGC
    -XX:CMSInitiatingOccupancyFraction=80
    -Xcompressedrefs
    -Dcom.ibm.ws.management.event.max_polling_interval=1000
    -Djava.util.Arrays.useLegacyMergeSort=true
    参数解释及相关优化方案:
    Ⅰ、内存代的优化
    -Xms   初始总堆内存,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
    非堆内存分配
    -Xmx   最大总堆内存,一般设置为物理内存的1/4
    -Xmn   年轻带堆内存,sun官方推荐为整个堆的3/8
         使用 -Xgcpolicy:gencon 或 -Xgcpolicy:balanced 时,-Xmn 选项相当于设置 -Xmns 和 -Xmnx 选项[IBM]。
         使用 -Xgcpolicy:gencon 时,-Xmnx 设置新区域的最大大小。缺省情况下,此选项设置为 -Xmx 选项值的 25%。如果禁用 scavenger,将忽略 -Xmnx 选项[IBM]。
         使用 -Xgcpolicy:balanced 时,-Xmnx 设置 Eden 空间的最大大小。缺省情况下,此选项设置为 -Xmx 选项值的 25%[IBM]。
         对于 -Xgcpolicy:gencon 和 -Xgcpolicy:balanced 策略,如果您尝试同时使用 -Xmnx 和 -Xmn,那么 JVM 会返回错误[IBM]。
    
    -Xmns   选项根据指定的垃圾回收策略,为新区域或 Eden 空间设置初始大小[IBM]。
    -Xmnx   选项根据指定的垃圾回收策略,为新区域或 Eden 空间设置最大大小[IBM]。
    
    -Xscmx   指定缓存的大小;这个参数只应用于 JVM 创建新缓存的情况。如果省略这个选项,那么选择一个与平台相关的默认值(通常是 16MB)。注意,一些操作系统设置可能会限制可分配的共享内存量,例如 Linux 上的 SHMMAX 通常设置为大约 20MB[IBM]。
    -XX:PermSize=2048m     持久带堆的初始大小
    -XX:MaxPermSize=2048M   持久带堆的最大大小、根据所需设置。如要编译jdk这种、因所编译的类非常多、一定要将该参数设置较大。
    
    疑问解答
      Q:-Xmn、-XX:NewSize/-XX:MaxNewSize、-XX:NewRatio 3组参数都可以影响年轻代的大小,混合使用的情况下,优先级是什么?
      A:
        高:-XX:NewSize/-XX:MaxNewSize
        中:-Xmn
        低:-XX:NewRatio
        推荐使用-Xmn参数,原因是这个参数简洁,相当于一次设定 NewSize/MaxNewSIze,而且两者相等,适用于生产环境。-Xmn 配合 -Xms/-Xmx,即可将堆内存布局完成。
        -Xmn参数是在JDK 1.4 开始支持。
    
    Ⅱ、字节码验证优化
    -Xverify:none(关闭Java字节码验证,从而加快了类装入的速度)
    
    Ⅲ、预热方法的缓存
    -XX:CompileThreshold=100   方法调用多少次就会被编译成本地机器码
    -XX:ParallelGCThreads=4    配置并行收集器的线程数,即:同时有多少个线程一起进行垃圾回收。此值建议配置与CPU数目相等。
    
    Ⅳ、垃圾回收器选择
      JVM给出了3种选择:串行收集器、并行收集器、并发收集器。串行收集器只适用于小数据量的情况,所以生产环境的选择主要是并行收集器和并发收集器。
      默认情况下JDK5.0以前都是使用串行收集器,如果想使用其他收集器需要在启动时加入相应参数。JDK5.0以后,JVM会根据当前系统配置进行智能判断。
    
    -XX:+DisableExplicitGC   禁用System.gc()的显示内存回收
    -XX:+UseParNewGC      使用并发内存回收(年轻GC)、关注响应时间。注:另一个年轻GC为: -XX:+UseParallelGC  关注吞吐量
    -XX:+UseConcMarkSweepGC
    -XX:CMSInitiatingOccupancyFraction=80
    点击显示详解

    2.关闭所有的验证,validation,选择 disableal。只保留Classpath Dependency Validator 。

    3.关闭拼写检查

    拼写检查功能可以帮助您快速查找代码中的拼写错误。检查时将扫描代码或代码中的选定区域,然后将其中的单词与其内置词典和自定义词典中的单词进行比较。如果代码中出现了词典中没有的单词,将被视为拼写错误的单词。

    比如,
    你的方法名是单词的缩写,IDE会有提示 ,类似这种就是拼写检查。
    一般没用,关掉即可。

    4.关于要不要关闭Build AutoMatically的问题

    1、自动编译:在菜单栏【Project】中找到【Build AutoMatically】,选中该条目表示当你保存项目下的某个文件时,项目将会自动编译(只编译修改了的文件);如果没有选中,当你保存某个文件时,Eclipse将不会自动编译修改了的文件;有时候,如果电脑比较卡,可以先不勾选该条目,等调试的时候再打开,但是切记,一定别忘了,有时候你修改好了一个文件,启动Tomcat调试时,项目还是跑的老方法,这时候可能是新代码没有被编译,项目运行的还是老代码;

    2、手动编译:在菜单来【Project】中找到【Clean…】,这个Clean条目就是手动编译,个人感觉这个名字起得很不好,应该起名为Clean and Build;它不光是清理,而且会重新编译;如果项目比较大,自动编译很卡,很耗时,开发的时候可以关闭自动编译,使用的时候再手动编译;

    建议不要关闭 自动编译!!!关了很麻烦也不是 eclipse 卡的主要原因!!!关了再写代码会很麻烦,很难受,很不习惯!!!

    5.取消所有启动时要激活的插件(在用时激活也一样)和其它的相关的在启动时执行的操作

     6.手动释放内存

    在eclipse菜单栏,选择Window,看到最下方的preferences,点击选中,在弹出的选项框中,右边显示有三个勾选框,勾选第三个Show heap status,点击右下的Apply,点击确认后,在eclipse的右下方会出现eclipse堆内存使用情况的数据,也可以看到前面提到的Xms和Xmx参数值,并且旁边有个垃圾桶的图标,那是Garbage Collector,中文叫垃圾回收,是java一个优点,自动回收机制,释放内存。如果eclipse卡到想哭,可以手动点击那个垃圾桶图标释放内存。

  • 相关阅读:
    java8关于list的操作
    jdk8的.toMap()
    Mybatis中报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题解决
    springboot集成bootstrap遇到的问题
    java文件下载
    idea中mybatis自动生成代码方式
    文件读写操作inputStream转为byte[] , 将InputStream写入本地文件
    Polar transformer networks
    Fine-Grained Person Re-identification
    Person Re-identification by Contour Sketch under Moderate Clothing Change
  • 原文地址:https://www.cnblogs.com/lukelook/p/13600881.html
Copyright © 2020-2023  润新知