在进行开发大项目时,常常会遇见开发工具卡顿的情况 ,大多数都是因为内存不够的原因造成的,今天学习了为MyEclipse分配更大内存的方法。是通过修改配置文件实现的。

一:修改myeclipse.ini文件

首先找到MyEclipse的安装目录

打开myeclipse的配置文件 如图选中文件

文档最后三行可以更改数字 根据本机自带物理内存的大小 采用1/4或者1/3适当修改

最需要注意的是:在修改完成后第一次启动编译器需要在安装根目录下启动.exe,不要通过快捷方式启动,否则修改失败

其三项分别含义为:

-Xms   初始空间 默认为物理内存的1/64
-Xmx   最大空间 默认为物理内存的1/4   (建议最大不要超过可用物理内存的80%)
-Xmn   新增空间 默认为1/4的-Xmx值

在提到通过修改myeclipse.ini文件中参数-Xms,-Xmx,-PerSize的值时,这几个参数具体是指什么?在网上搜集了一些资料,现整理如下:
这涉及到JVM的内存管理机制。
1.堆(Heap)和非堆(Non-heap)内存
按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的。”“在JVM中堆之外的内存称为非堆内存(Non-heap memory)”。可以看出JVM主要管理两种类型的内存:堆和非堆。简单来说堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常数池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。

2.堆内存分配
JVM初始分配的内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx相等以避免在每次GC 后调整堆的大小。
3.非堆内存分配
JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。
4.JVM内存限制(最大值)
首先JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。

举例说明含义:
-Xms128m 表示JVM Heap(堆内存)最小尺寸128MB,初始分配
-Xmx512m 表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配。
说明:如果-Xmx不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM不是Throwable的,无法用try…catch捕捉。

PermSize和MaxPermSize指明虚拟机为java永久生成对象(Permanate generation)如,class对象、方法对象这些可反射(reflective)对象分配内存限制,这些内存不包括在Heap(堆内存)区之中。
-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配
过小会导致:java.lang.OutOfMemoryError: PermGen space
MaxPermSize缺省值和-server -client选项相关。-server选项下默认MaxPermSize为64m
-client选项下默认MaxPermSize为32m

PS:不同厂家的jdk垃圾回收算法不一样。在sun的jdk下,Xms和Xmx设置一样,可以减轻伸缩堆大小带来的压力,但在ibm的jdk下面,设置为一样会增大堆碎片产生的几率。
下面再简单的整理一下优化MyEclipse速度的主要方法:
1.修改myeclipse.ini。
2.取消自动validation
3.勾掉无用插件。
4.修改启动加载模块

二:设置Default VM Arguments

在myEclipse中,打开Windows-> Preferences->Java->Installed JREs->点击正在使用的JDK->Edit->Default VM Arguments文本框中输入:-Xms64m -Xmx256m

三:如果是web工程还报内存溢出,可能就要设置tomcat内存。

(1)tomcat的安装根目录%tomcat%bin/catalina.bat文件,SET JAVA_OPTS 一行;
set JAVA_OPTS=-Xms1024m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m
里面的值可以根据项目的具体情况和机器的具体情况作调整

(2)myeclipse配置web服务器配置 Window—Preferences—Myeclipse—Servers—tomcat 5.x—JDK的Optional Java VM arguments配置为:

-Xms256m -Xmx512m -XX:MaxNewSize=256m -XX:MaxPermSize=256m

四:如果是debug模式运行,需要调整debug的虚拟机参数,因为debug模式的默认内存分配时很少的。

五:如果是eclipse跑junit测试遇到内存问题

进行运行全部的测试用例的时候发现不能运行完了,到了后面的一些测试用例的时候出现OutOfMemoryError,是junit导致的,因为teardown并没有清理掉使用过的内存,只能修改Run的时候的参数,把内存加大。
Eclipse启动JUnit的时候设置的值大概是64M左右,而我加大内存后监控内存使用的结果表明全部的测试用例需要使用100M内存。
方法为:Run->Run…->JUnit->AllTests->(x)=Arguments->VM Arguments: -Xmx500m
注意上面的AllTests为自己要修改的那个包含全部测试用例的Test suite的类。

-Xmn是年轻代,一般不要超过堆大小(-Xms和-Xmx)的一半

为myeclipse分配更大的内存相关推荐

  1. 为安卓应用申请更大的内存 largeHeap=true

    http://blog.csdn.net/jiaoyang623/article/details/8773445 今天群里有人讨论怎么给app分配超过100M的内存,有人亮出了largeHeap参数. ...

  2. 你可以分配多大的内存

    #include <stdio.h> #include <stdlib.h> main() {     int MB = 0;     while(malloc(1<&l ...

  3. 大页内存的使用:HugePages(大内存页)的原理与使用

    <DPDK | 如何在用户空间使用大页内存hugepage> <DPDK内存篇(三): 标准大页.NUMA.DMA.IOMMU.IOVA.内存池> <大页内存的使用:大页 ...

  4. 【内存】Linux 页表、大页与透明大页|大页内存

    目录 页表与MMU CPU访问的是什么地址(虚拟地址,物理地址)? MMU如何工作 MMU对内存的保护 多级页表 一. 内存映射与页表 1. 内存映射 2. 页表 4. 页表的简单工作原理 大页 什么 ...

  5. 服务器系统怎么分配,服务器系统盘分配多大内存

    服务器系统盘分配多大内存 内容精选 换一换 本文以云服务器的操作系统为"Windows Server 2008 R2 Enterprise 64bit"为例,提供磁盘的初始化操作指 ...

  6. jvm深入理解:内存分配与回收策略(优先在Eden分配、大对象直接进入老年代、长期存活的对象将进入老年代、动态对象年龄判定、空间分配担保)

    出入:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) Java技术体系的自动内存管理,最根本的目标是自动化地解决两个问题:自动给对象分配内存以及自动回收分配给对象的内存. 象的内存分配,从 ...

  7. KGH: NO ACCESS内存分配过大,引起的ORA-4031故障

    一.故障症状 某些时段发现大量ORA-04031报错 Errors in file /oracle/diag/rdbms/obie/obie1/trace/obie1_smon_18153542.tr ...

  8. 更多核心、更大内存、更低成本 AMD皓龙6000欲成云计算基石

    随着AMD携手盛大 "龙起云涌 芯聚多核――AMD皓龙6000系列平台发布会暨盛大AMD云计算联合实验室启动联合发布会"的召开,为业界带来最高可达4路48核的x86服务器系统的同时 ...

  9. 挑战malloc极限,看看你的系统有多大的内存分配能力

    /**: MallocLimit.c  * by lonelyforest  *这个程序在DOS下运行,将会输出您的内存到底能够  *分配多大!!!  */ #include <stdio.h& ...

最新文章

  1. 基于多源信息的深度卷积神经网络预测CircRNA疾病关联的有效方法
  2. Struts2如何实现MVC,与Spring MVC有什么不同?
  3. c++以代理的方式来实现接口化编程
  4. excel删除无尽空白行_excel如何批量删除空白行 巧用 ctrl+G 只需1秒 最常用的技巧...
  5. 【转】刨根究底字符编码【2.0版】(3):字符编码的由来、演变与ASCII码
  6. 计算机辅助普通话水平测试评分办法,计算机辅助普通话水平测试评分试行办法...
  7. php7数组写法,数组运算符 - PHP 7 中文文档
  8. vscode markdown实时预览
  9. Java用WebSocket + tail命令实现Web实时日志
  10. Java main方法快捷键
  11. 唐诗三百首加密软件如何使用_绿盾加密软件如何设置审批流程管理
  12. BFS 算法框架套路详解
  13. NRF52840学习历程(十一)幻彩RGB灯之WS2812B
  14. 【科研绘图】Adobe illustrator加Origin组合绘图
  15. Minimum Solder Mask Sliver Constraint,PCB焊盘阻焊层之间间距小于10mil报错
  16. php 安装、使用sphinx
  17. ESP32-C3 应用 篇(实例二、通过蓝牙将传感器数据发送给手机,手机端控制 SK6812 LED)
  18. 苹果造车简史:库克能靠造车封神吗?
  19. c语言大数运算知乎,为什么知乎上大多数人不推荐C语言入门?
  20. 大话西游手游服务器合服信息查询,大话西游手游合区查询 6月21日合区服务器列表...

热门文章

  1. [待解决]自定义头像时使用vue-cropper进行图片裁剪,得到的是base64格式的图片,如何对接file类型的api接口
  2. Vue2.x中vuex的使用方法及应用时的项目文件结构设计以完整demo实例解释
  3. [JavaScript编程练习]js获取文字中的100,使其变为红色,若文字100改为其他任意数字,该数字依然会是红色
  4. VS2013支持多字节
  5. OpenCV: 图像连通域检测的递归算法
  6. leetcode-832-Flipping an Image
  7. Vagrant+VirtualBox版本的坑
  8. 春风十里不如春城一聚:华平解决方案巡展走进昆明
  9. Nginx + pserve + supervisord — The Pyramid Cookbook v0.2
  10. Yii2的MVC新特性