`

虚拟机内存大小

阅读更多
修改MyEclipse/eclipse文件夹中配置文件eclipse.ini中的内存分配=================================== 一般的ini文件设置主要包括以下几项: -vmargs -Xms40m -Xmx256m -XX:PermSize=64M -XX:MaxPermSize=128M 以下解释其意思。 -vmargs:说明后面是VM的参数 -Xms40m:虚拟机占用系统的最小内存 -Xmx256m:虚拟机占用系统的最大内存 -XX:PermSize:最小堆大小。一般报内存不足时,都是说这个太小,堆空间剩余小于5%就会警告,建议把这个稍微设大一点,不过要视自己机器内存大小来设置 -XX:MaxPermSize:最大堆大小。这个也适当大些所以若出现问题,首先请调整 -Xms40m:将其设置的小一些,就ok了,1g内存推荐设置为: -vmargs -Xms128M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M 其中-XX:PermSize=64M可以设置大一些,但不能超过MaxPermSize -Xmx512M的5%为25.6M,理论上要求-Xmx的数值与-XX:MaxPermSize必须大于25.6M



来源:[url]http://blog.csdn.net/chow__zh/article/details/7701476[/url]

Java heap space的设置与在myeclipse启动时分配JVM heap大小的方法:.
 
 .
 
我使用的服务方式的Tomcat,内存2G,我在Configure Tomcat-》JAVA-》JAVA OPTIONS中的参数设置是:.
 
-Xms500m 
-Xmx1024m 
-XX:PermSize=64M 
-XX:MaxPermSize=256m 
-XX:ReservedCodeCacheSize=48m 
-Duser.timezone=GMT+08
 
首先检查程序有没有限入死循环 

这个问题主要还是由这个问题 java.lang.OutOfMemoryError: Java heap space 引起的。第一次出现这样的的问题以后,引发了其他的问题。在网上一查可能是JAVA的堆栈设置太小的原因。
 
跟据网上的答案大致有这两种解决方法: 
1、设置环境变量 
set JAVA_OPTS= -Xms32m -Xmx512m 
可以根据自己机器的内存进行更改。 

2、java -Xms32m -Xmx800m className 
就是在执行JAVA类文件时加上这个参数,其中className是需要执行的确类名。(包括包名) 
这个解决问题了。而且执行的速度比没有设置的时候快很多。 

如果在测试的时候可能会用Eclispe 这时候就需要在Eclipse ->run -arguments 中的VM arguments 中输入-Xms32m -Xmx800m这个参数就可以了。
 后来在Eclilpse中修改了启动参数,在VM arguments 加入了-Xms32m -Xmx800m,问题解决。 

==============================================================================
 
一、java.lang.OutOfMemoryError: PermGen space 
PermGen space的全称是Permanent Generation space,是指内存的永久保存区域, 这块内存主要是被JVM存放Class和Meta信息的,Class在被Loader时就会被放到PermGen space中, 它和存放类实例(Instance)的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对 PermGen space进行清理,所以如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误, 这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。 
解决方法: 手动设置MaxPermSize大小 

修改TOMCAT_HOME/bin/catalina.sh 
在“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入以下行: 
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m 
建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。 

二、java.lang.OutOfMemoryError: Java heap space 

Heap size 设置 


JVM堆的设置是指java程序运行过程中JVM可以调配使用的内存空间的设置.JVM在启动的时候会自动设置Heap size的值,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4。可以利用JVM提供的-Xmn -Xms -Xmx等选项可 进行设置。Heap size 的大小是Young Generation 和Tenured Generaion 之和。
 提示:在JVM中如果98%的时间是用于GC且可用的Heap size 不足2%的时候将抛出此异常信息。 

提示:Heap Size 最大不要超过可用物理内存的80%,一般的要将-Xms和-Xmx选项设置为相同,而-Xmn为1/4的-Xmx值。
 解决方法:手动设置Heap size 

修改TOMCAT_HOME/bin/catalina.sh 
在“echo "Using CATALINA_BASE:   $CATALINA_BASE"”上面加入: JAVA_OPTS="-server -Xms800m -Xmx800m   -XX:MaxNewSize=256m"
 
三、实例,以下给出1G内存环境下java jvm 的参数设置参考: 
JAVA_OPTS="-server -Xms800m -Xmx800m -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
 很大的web工程,用tomcat默认分配的内存空间无法启动,如果不是在myeclipse中启动tomcat可以对tomcat这样设置: 
TOMCAT_HOME\bin\catalina.bat 中添加这样一句话:set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m
 
Java堆的管理—垃圾回收提到一下几点,很不错,或许可以作为写程序时候的准则: 
  (1)不要试图去假定垃圾收集发生的时间,这一切都是未知的。比如,方法中的一个临时对象在方法调用完毕后就变成了无用对象,这个时候它的内存就可以被释放。 
  (2)Java中提供了一些和垃圾收集打交道的类,而且提供了一种强行执行垃圾收集的方法--调用System.gc(),但这同样是个不确定的方法。Java 中并不保证每次调用该方法就一定能够启动垃圾收集,它只不过会向JVM发出这样一个申请,到底是否真正执行垃圾收集,一切都是个未知数。
   (3)挑选适合自己的垃圾收集器。一般来说,如果系统没有特殊和苛刻的性能要求,可以采用JVM的缺省选项。否则可以考虑使用有针对性的垃圾收集器,比如增量收集器就比较适合实时性要求较高的系统之中。系统具有较高的配置,有比较多的闲置资源,可以考虑使用并行标记/清除收集器。
   (4)关键的也是难把握的问题是内存泄漏。良好的编程习惯和严谨的编程态度永远是最重要的,不要让自己的一个小错误导致内存出现大漏洞。 

  (5)尽早释放无用对象的引用。 

大多数程序员在使用临时变量的时候,都是让引用变量在退出活动域(scope)后,自动设置为null,暗示垃圾收集器来收集该对象,还必须注意该引用的对象是否被监听,如果有,则要去掉监听器,然后再赋空值。
 
就是说,对于频繁申请内存和释放内存的操作,还是自己控制一下比较好,但是System.gc()的方法不一定适用,最好使用finallize强制执行或者写自己的finallize方法。
 
==============================================================================
 
java.lang.OutOfMemoryError: Java heap space 解决方法 

这个问题的根源是jvm虚拟机的默认Heap大小是64M,可以通过设置其最大和最小值来实现.
 
设置的方法主要是以下几个:. 
1.可以在windows 更改系统环境变量 
   加上JAVA_OPTS=-Xms64m -Xmx512m 

2.如果用的tomcat,在windows下,可以在 
  C:\tomcat5.5.9\bin\catalina.bat  中加上::set JAVA_OPTS=-Xms64m -Xmx256m 
   位置在: rem Guess CATALINA_HOME if not defined  这行的下面加合适. 

3.如果是linux系统 

  Linux  在{tomcat_home}/bin/catalina.sh的前面,加上:set JAVA_OPTS='-Xms64 -Xmx512
 
------------------------------
 

如果要在myeclipse中启动,上述的修改就不起作用了,可如下设置: 

Myeclipse->preferences->myeclipse->servers->tomcat->tomcat×.×->JDK面板中的 
Optional Java VM arguments中添加:-Xmx1024M -Xms512M -XX:MaxPermSize=256m 



分享到:
评论

相关推荐

    如何设置Tomcat的JVM虚拟机内存大小

    设置 Tomcat 的 JVM 虚拟机内存大小是一个重要的步骤。可以通过命令行的方式改变虚拟机使用内存的大小。有两个参数用来设置虚拟机使用内存的大小:-Xms 和 -Xmx。-Xms 用于设置 JVM 初始化堆的大小,-Xmx 用于设置 ...

    如何配置Tomcat的JVM虚拟机内存大小

    ### 如何配置Tomcat的JVM虚拟机内存大小:深入解析与最佳实践 #### 引言 在IT领域,特别是Web应用服务器管理中,正确配置Java虚拟机(JVM)的内存大小对于确保应用程序的稳定性和性能至关重要。本文将详细探讨如何...

    eclipse设置 java内存

    第一种方法:通过 Eclipse 的 Preferences 设置 Java 虚拟机内存大小 要设置Eclipse的java内存,需要打开Eclipse,选择 Window 菜单下的 Preferences...项,然后在对话框左边的树上双击 Java,再双击 Installed ...

    Java虚拟机内存管理总结

    Java虚拟机内存管理总结 Java虚拟机(JVM)中的内存管理是指Java语言中对象的分配和释放问题。Java中的内存管理可以分为两部分:对象的分配和释放。 对象的分配是由程序完成的,程序员需要通过关键字new为每个对象...

    虚拟机内存工作原理

    - VMware ESXi在创建虚拟机时会自动为每个虚拟机创建一个与内存大小相等的swap文件(*.vswp),用于内存扩展。 #### 五、虚拟机内存利用技术 在虚拟化环境中,为了更高效地利用内存资源,引入了一些关键技术: 1. ...

    深入理解Java 虚拟机内存模型.rar

    以下是对Java虚拟机内存模型的详细解读。 1. **程序计数器(Program Counter Register)** - 这是每个线程私有的内存区域,用于存储当前线程执行的字节码的地址,每次方法调用都会更新这个计数器,以便下一次知道...

    Tomcat JVM内存设置方法

    - 其中,`-Xms`表示初始堆内存大小,`-Xmx`表示最大堆内存大小,`-XX:PermSize`表示永久代初始大小,`-XX:MaxPermSize`表示永久代最大大小,`-XX:MaxNewSize`表示新生代最大大小,`-Djava.awt.headless=true`则表示...

    Java虚拟机内存区域模型

    "Java虚拟机内存区域模型" Java虚拟机内存区域模型是Java虚拟机管理的内存区域模型,该模型将内存区域分为程序计数器、虚拟机栈、本地方法栈、堆和方法区五个部分。程序计数器是一块较小的内存空间,用于记录当前...

    虚拟机内存模型

    虚拟机内存模型是计算机科学中的一个重要概念,尤其是在Java和许多其他高级编程语言中。它描述了虚拟机如何管理和使用内存,以确保程序的正确运行。本文将深入探讨虚拟机内存模型的基本结构、功能以及相关工具的使用...

    KVM virsh命令管理虚拟机

    在创建虚拟机后,可以通过代码分析来理解各个XML元素的作用,比如标签用于定义虚拟机域,用于设置虚拟机名称,用于设置虚拟机内存大小,用于设置虚拟机CPU数量,用于设置启动设备等。 启动虚拟机是指令virsh start...

    基于Java虚拟机内存模型的性能调优方法.zip

    本篇文章将深入探讨基于Java虚拟机内存模型的性能调优方法,帮助开发者优化应用程序,提高系统效率。 1. **Java内存模型** Java内存模型,也称为JVM内存结构,主要包括堆内存、栈内存、方法区、程序计数器和本地...

    麒麟V10安装虚拟机.doc

    - **修改配置文件**:打开`/etc/libvirt/qemu.conf`文件,根据具体需求进行配置调整,例如设置虚拟机内存大小、CPU数量等。 - **重启服务**:更新配置后,重启libvirtd服务以使改动生效:`service libvirtd ...

    高效虚拟机管理工具

    6. **内存和CPU管理**:`setmem` 修改虚拟机内存大小,`setmaxmem` 设置最大内存,`setvcpus` 修改虚拟CPU数量。 virsh 还有两种执行模式:直接模式和互动模式。直接模式下,通过命令行参数执行单个命令;而在互动...

    虚拟机安装的具体步骤文档

    - 设置虚拟机内存大小,建议根据主机配置合理分配,以避免资源浪费。 3. **设置虚拟硬盘**: - 为新创建的虚拟机添加虚拟硬盘。 - 选择“创建一个动态扩展的虚拟硬盘”,这样可以节省磁盘空间。 - 设定虚拟硬盘...

    Leopard虚拟机安装

    - 设置虚拟机内存大小,根据主机性能选择合适的大小,建议设置较大值以加快安装速度。 - 使用整个物理磁盘作为虚拟机磁盘。 - 完成虚拟机的基本设置后,进行编辑虚拟机操作,包括设置硬盘为独立持久模式、添加...

    java虚拟机jvm及Tomcat中的jvm有关内存的设置与调优

    3. **-Xmn**:设置年轻代内存大小,通常不需要手动设置,JVM会根据实际情况自动调整。 4. **-Xss**:设定每个线程的栈大小,对于大多数应用而言,保留默认值即可。 5. **-XX:PermSize** 和 **-XX:MaxPermSize** ...

    虚拟机内存工作原理VCP0.pdf

    对于虚拟机,如VMware ESXi,虚拟机的内存大小由一个等大的文件表示,这个文件存储在与虚拟机镜像相同的目录下,名为.vswp。在Android系统中,基于Linux内核,它使用交换分区(Swap)来扩展内存,类似于Windows的...

    虚拟机安装.docx

    - 设置虚拟机内存大小,根据实际需要分配足够的内存。 - 创建虚拟硬盘,选择存储类型和文件格式,然后指定大小。 ##### 4. 配置虚拟机硬件 - 进入虚拟机设置界面,可以对 CPU 数量、内存大小、网络连接方式进行...

Global site tag (gtag.js) - Google Analytics