为myeclipse分配更大的内存
在进行开发大项目时,常常会遇见开发工具卡顿的情况 ,大多数都是因为内存不够的原因造成的,今天学习了为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分配更大的内存相关推荐
- 为安卓应用申请更大的内存 largeHeap=true
http://blog.csdn.net/jiaoyang623/article/details/8773445 今天群里有人讨论怎么给app分配超过100M的内存,有人亮出了largeHeap参数. ...
- 你可以分配多大的内存
#include <stdio.h> #include <stdlib.h> main() { int MB = 0; while(malloc(1<&l ...
- 大页内存的使用:HugePages(大内存页)的原理与使用
<DPDK | 如何在用户空间使用大页内存hugepage> <DPDK内存篇(三): 标准大页.NUMA.DMA.IOMMU.IOVA.内存池> <大页内存的使用:大页 ...
- 【内存】Linux 页表、大页与透明大页|大页内存
目录 页表与MMU CPU访问的是什么地址(虚拟地址,物理地址)? MMU如何工作 MMU对内存的保护 多级页表 一. 内存映射与页表 1. 内存映射 2. 页表 4. 页表的简单工作原理 大页 什么 ...
- 服务器系统怎么分配,服务器系统盘分配多大内存
服务器系统盘分配多大内存 内容精选 换一换 本文以云服务器的操作系统为"Windows Server 2008 R2 Enterprise 64bit"为例,提供磁盘的初始化操作指 ...
- jvm深入理解:内存分配与回收策略(优先在Eden分配、大对象直接进入老年代、长期存活的对象将进入老年代、动态对象年龄判定、空间分配担保)
出入:深入理解Java虚拟机:JVM高级特性与最佳实践(第3版) Java技术体系的自动内存管理,最根本的目标是自动化地解决两个问题:自动给对象分配内存以及自动回收分配给对象的内存. 象的内存分配,从 ...
- KGH: NO ACCESS内存分配过大,引起的ORA-4031故障
一.故障症状 某些时段发现大量ORA-04031报错 Errors in file /oracle/diag/rdbms/obie/obie1/trace/obie1_smon_18153542.tr ...
- 更多核心、更大内存、更低成本 AMD皓龙6000欲成云计算基石
随着AMD携手盛大 "龙起云涌 芯聚多核――AMD皓龙6000系列平台发布会暨盛大AMD云计算联合实验室启动联合发布会"的召开,为业界带来最高可达4路48核的x86服务器系统的同时 ...
- 挑战malloc极限,看看你的系统有多大的内存分配能力
/**: MallocLimit.c * by lonelyforest *这个程序在DOS下运行,将会输出您的内存到底能够 *分配多大!!! */ #include <stdio.h& ...
最新文章
- 基于多源信息的深度卷积神经网络预测CircRNA疾病关联的有效方法
- Struts2如何实现MVC,与Spring MVC有什么不同?
- c++以代理的方式来实现接口化编程
- excel删除无尽空白行_excel如何批量删除空白行 巧用 ctrl+G 只需1秒 最常用的技巧...
- 【转】刨根究底字符编码【2.0版】(3):字符编码的由来、演变与ASCII码
- 计算机辅助普通话水平测试评分办法,计算机辅助普通话水平测试评分试行办法...
- php7数组写法,数组运算符 - PHP 7 中文文档
- vscode markdown实时预览
- Java用WebSocket + tail命令实现Web实时日志
- Java main方法快捷键
- 唐诗三百首加密软件如何使用_绿盾加密软件如何设置审批流程管理
- BFS 算法框架套路详解
- NRF52840学习历程(十一)幻彩RGB灯之WS2812B
- 【科研绘图】Adobe illustrator加Origin组合绘图
- Minimum Solder Mask Sliver Constraint,PCB焊盘阻焊层之间间距小于10mil报错
- php 安装、使用sphinx
- ESP32-C3 应用 篇(实例二、通过蓝牙将传感器数据发送给手机,手机端控制 SK6812 LED)
- 苹果造车简史:库克能靠造车封神吗?
- c语言大数运算知乎,为什么知乎上大多数人不推荐C语言入门?
- 大话西游手游服务器合服信息查询,大话西游手游合区查询 6月21日合区服务器列表...
热门文章
- [待解决]自定义头像时使用vue-cropper进行图片裁剪,得到的是base64格式的图片,如何对接file类型的api接口
- Vue2.x中vuex的使用方法及应用时的项目文件结构设计以完整demo实例解释
- [JavaScript编程练习]js获取文字中的100,使其变为红色,若文字100改为其他任意数字,该数字依然会是红色
- VS2013支持多字节
- OpenCV: 图像连通域检测的递归算法
- leetcode-832-Flipping an Image
- Vagrant+VirtualBox版本的坑
- 春风十里不如春城一聚:华平解决方案巡展走进昆明
- Nginx + pserve + supervisord — The Pyramid Cookbook v0.2
- Yii2的MVC新特性