关于设置Java虚拟机(JVM)的内存问题

作者&投稿:左羽 (若有异议请与网页底部的电邮联系)
~

  最近做毕设时 遇到了一点小问题 在解析dblp xml文件时(该文件很大 最新版本为 MB) 老是报错

  java lang OutOfMemoryError: Java heap space

  最后通过查资料才知道 这是由于JVM堆内存不足造成的 JVM在启动动的时候一般会设置JVM Heap的值

  其初始空间(即 Xms)是物理内存的 / 最大空间( Xmx)不可超过物理内存 在JVM中如果 %的时间是用于GC 且可用的Heap size 不足 %的时候将抛出此异常信息 出现这种问题可以通过修改JVM heap大小解决

  如

  点击(此处)折叠或打开

  java Xms M Xmx M className

  以上设置JVM初始化堆内存为 M 最大可用堆内存为 M

  ( )在命令行中设置的方法就如上面所述

  ( )在Eclipse中可以这样设置

  在eclipse的 Run >Run Configurations >Arguments下的VM Arguments中设置

   Xms M Xmx M

  另外可以使用 java X查看其它JVM参数情况

  点击(此处)折叠或打开

  D:\work>java X

   Xmixed mixed mode execution (default)

   Xint interpreted mode execution only

   Xbootclasspath:<directories and zip/jar files separated by ;>

  set search path for bootstrap classes and resources

   Xbootclasspath/a:<directories and zip/jar files separated by ;>

  append to end of bootstrap class path

   Xbootclasspath/p:<directories and zip/jar files separated by ;>

  prepend in front of bootstrap class path

   Xnoclassgc disable class garbage collection

   Xincgc enable incremental garbage collection

   Xloggc:<file> log GC status to a file with time stamps

   Xbatch disable background pilation

   Xms<size> set initial Java heap size

   Xmx<size> set maximum Java heap size

   Xss<size> set java thread stack size

   Xprof output cpu profiling data

   Xfuture enable strictest checks anticipating future default

   Xrs reduce use of OS signals by Java/VM (see documentation)

   Xcheck:jni perform additional checks for JNI functions

   Xshare:off do not attempt to use shared class data

   Xshare:auto use shared class data if possible (default)

   Xshare:on require using shared class data otherwise fail

  The X options are non standard and subject to change without notice

  可以通过java lang Runtime的一些方法查看jvm的内存使用情况

  点击(此处)折叠或打开

  System out println( Total Memory: + Runtime getRuntime() totalMemory() / ( * + MB )

  System out println( Free Memory: + Runtime getRuntime() freeMemory() / ( * ) + MB )

  System out println( Max Memory: + Runtime getRuntime() maxMemory() / ( * ) + MB )

  maxMemory()这个方法返回的是java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存 以字节为单位

  totalMemory()这个方法返回的是java虚拟机现在已经从操作系统那里挖过来的内存大小 也就是java虚拟机这个进程当时所占用的所有内存

  freeMemory为当前jvm中没有使用的内存

  附 jvm参数说明 (转自)

   server:一定要作为第一个参数 在多个CPU时性能佳

   Xms java Heap初始大小 默认是物理内存的 /

   Xmx java heap最大值 建议均设为物理内存的一半 不可超过物理内存

   XX:PermSize:设定内存的永久保存区初始大小 缺省值为 M (我用visualvm exe查看的)

   XX:MaxPermSize:设定内存的永久保存区最大 大小 缺省值为 M (我用visualvm exe查看的)

   XX:SurvivorRatio=   :生还者池的大小 默认是 如果垃圾回收变成了瓶颈 您可以尝试定制生成池设置

   XX:NewSize: 新生成的池的初始大小 缺省值为 M

   XX:MaxNewSize: 新生成的池的最大大小    缺省值为 M

  如果 JVM 的堆大小大于 GB 则应该使用值 XX:newSize= m XX:MaxNewSize= m XX:SurvivorRatio= 或者将堆的总大小的 % 到 % 分配给新生成的池 调大新对象区 减少Full GC次数

  +XX:AggressiveHeap 会使得 Xms没有意义 这个参数让jvm忽略Xmx参数 疯狂地吃完一个G物理内存 再吃尽一个G的swap

   Xss 每个线程的Stack大小 Xss 这使得JBoss每增加一个线程(thread)就会立即消耗 M内存 而最佳值应该是 K 默认值好像是 k

   verbose:gc 现实垃圾收集信息

   Xloggc:gc log 指定垃圾收集日志文件

   Xmn young generation的heap大小 一般设置为Xmx的 分之一

   XX:+UseParNewGC 缩短minor收集的时间

   XX:+UseConcMarkSweepGC 缩短major收集的时间 此选项在Heap Size 比较大而且Major收集时间较长的情况下使用更合适

   XX:userParNewGC 可用来设置并行收集【多CPU】

   XX:ParallelGCThreads 可用来增加并行度【多CPU】

lishixinzhi/Article/program/Java/hx/201311/26103




虚拟机的Java
上面列出的原始数据类型的数据在Java执行时不需要用硬件标记。操作这些原始数据类型数据的字节码(指令)本身就已经指出了操作数的数据类型,例如iadd、ladd、fadd和dadd指令都是把两个数相加,其操作数类型别是int、long、float和double。虚拟机没有给boolean(布尔)类型设置单独的指令。boolean型的数据是由...

java虚拟机内存的设置,在windows下设置,双击执行jar文件时有足够内存...
我明白楼主的意思,实际上很可能是因为循环的问题导致jvm虚拟内存不够导致的溢出。一般指定jvm运行的虚拟内存都是在诸如tomcat或者weblogic之类的中间件或者eclipse或者jboss之类的东西,但是楼主的是一个jar,我推荐这样做,新建一个文件,命名为XX.bat,里面写java -jar -Xms128m -Xmx128m XX.jar,双击...

请问Java虚拟机环境变量怎么配置?
Windows系统中设置环境变量如下图:右击“我的电脑”,选择“属性”。点击“高级”选项卡,选择“环境变量”。在“系统环境变量”中设置上面提到的3个环境变量,如果变量已经存在就选择“编辑”,否则选“新建”。JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径(假设安装在D:\\jdk1.4),此路径...

什么是JAVA是虚拟机?为什么要使用他?
在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java 虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。另附:什么人需要使用JAVA虚拟机?Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大 概的了解。这有助于理解Java语言的...

如何设置Tomcat的JVM虚拟机内存大小
在java web应用开发的过程中,tomcat这个服务器是经常用到的,而它的性能情况直接影响了web应用的效率,提高tomcat的JVM的内存,能提高它的效率,下面介绍下如何设置tomcat的JVM虚拟机内存大小:1、Tomcat作为应用服务器,不能直接运行,需要相应的硬件和操作系统的支持,,需要java虚拟机环境。也就是说...

如何安装和打开java虚拟机(步骤详细)
右击“我的电脑”->属性->高级->环境变量,在“系统变量”中设置变量名为JAVA_HOME,值为JDK安装路径,一般为C:\\Program Files\\Java\\jdk***;然后在path变量中添加%JAVA_HOME%\\bin;以分号与前面的路径隔开.最后在添加一个变量classpath,设置这个变量值为:.;%JAVA_HOME%\\lib\\dt.jar;%JAVA_HOME%...

JAVA虚拟机是什么?有什么作用?
Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。 2.谁需要了解Java虚拟机 Java虚拟机是Java语言底层实现的基础,对Java语言感兴趣的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。对于要在特定平台上实现Java虚拟机的软件人员,Java语言的编译器作者...

怎么改变java虚拟机默认字符集
设置属性有以下三种:1.你就是没有保存回去,就差一步了 Properties pps=System. getProperties();pps.put("file.encoding","x-MacThai");\/\/设置完成后要将属性保存 System.setProperties(pps);2.System.setProperty("file.encoding","x-MacThai");3.运行时设置 java -D file.encoding=x-Mac...

netbeans里怎么改java虚拟机内存
配置IDE的启动参数 我们既可以在命令行给IDE添加启动参数,也可以在netbeans安装目录的etc\/netbeans.conf文件中添加。将IDE的启动参数传递给当前的JVM也可以对IDE的启动进行优化。比如设置JVM的 –Xmx(maximum heap size) 参数的两种方式:1)在netbeans.conf添加一行 –J-Xmx64m 2)在命令行中输入启动...

急!求高人指点!如何用java虚拟机运行java程序,我对java一窍不通!万分...
去oracle网站下载JDK,最新的是1.6,安装好后,把jdk的path设置好,指向安装目录的bin目录。然后最简单的方式运行一个hello world了。把下面保存名为Helloworld.java的文件,就是一个纯文本文件。public class Helloworld { public static void main(String[] args){ System.out.println("Hello world, ...

浮山县13110017018: JVM环境参数怎么配置? -
威虞怡平: java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -Xmx3550m:设置JVM最大可用内存为3550M. -Xms3550m:设置JVM促使内存为3550m.此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存. -Xmn2g:设置年轻代大...

浮山县13110017018: 如何安装JAVA虚拟机并设置JAVA环境变量 -
威虞怡平: vi /etc/profile 末尾加上如下配置 export JAVA_HOME=/usr/local/jdk1.8.0_111 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarsource /etc/profile 并检查java版本 java -version 配置...

浮山县13110017018: 如何在maven环境中设置JVM参数 -
威虞怡平: 有时候我们需要设定maven环境下的JVM参数,以便通过maven执行的命令或启动的系统能得到它们需要的参数设定.比如:当我们使用jetty:run启动jetty服务器时,在进行热部署时会经常发生:java.lang.OutOfMemoryError: PermGen space问题...

浮山县13110017018: 如何设置Java虚拟机JVM启动内存参数 -
威虞怡平: 设置Java虚拟机JVM启动内存参数方法如下:Tomcat修改TOMCAT_HOME/bin/catalina.bat,在[echo Using CATALINA_BASE: "%CATALINA_BASE%"] 上面加入,比如:set JAVA_OPTS= -server -Xms1536m -Xmx1536m或者JAVA_OPTS="-server -Xms1536m -Xmx1536m",服务器模式参数-server不加也可以 ,就变成 set JAVA_OPTS= -Xms1536m -Xmx1536m或者JAVA_OPTS=" -Xms1536m -Xmx1536m",

浮山县13110017018: 如何设置eclipse jvm参数 -
威虞怡平: 设置eclipse jvm参数 打开Eclipse 或者 MyEclipse 打开 Windows -> Preferences -> Java -> Installed JREs 选中你所使用的 JDK,然后点击 Edit,会出现如下图:在 Default VM Arguments输入框内输入: -Xms512m -Xmx512m 解释:-Xms是设置java虚拟机的最小分配内存;-Xmx则是最大分配内存;512m为内存空间 一般-Xmx设置为你电脑物理内存的1/4,而把-Xms和 -Xmx设置为一样,其实你可以设置得更大一些,只要系统能分配足够的内存就可以了,如果设置过大系统会提示你的.

浮山县13110017018: 请问Java虚拟机环境变量怎么配置? -
威虞怡平: 你好,很简单,请参考我给你的方法.希望对你有用.1找一本好书 适合你的水平 Amazon排行 Java编程思想 深入浅出MFC 并不太适合初学者 看不懂会打击自信心 把自己的基础告诉别人 去书店实际看一些,看一下前面是否能看懂 看书不要太...

浮山县13110017018: 如何在虚拟机中设置JAVA -
威虞怡平: 和真机一样 环境变量 JAVA_HOME 指向JDK的安装目录 把JDK下的bin的完整路径,添加到PATH环境变量 环境变量中不要配置CLASSPATH ...........可以添加一个 JRE_HOME 指向JRE在安装的目录

浮山县13110017018: java中怎样设置虚拟机的内存大小 -
威虞怡平: 如果你的程序是可运行的jar包的话,可以使用:java -server -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0 myJarName.jar 如果是tomcat的话:修改TOMCAT_...

浮山县13110017018: 在哪里设置jvm参数 -
威虞怡平: 1、配置方法 在java_options变量中增加 -xx:+heapdumponoutofmemoryerror -xx:heapdumppath=${目录}. 2、参数说明 (1)-xx:+heapdumponoutofmemoryerror参数表示当jvm发生oom时,自动生成dump文件.(2)-xx:heapdumppath=${目录}参数表示生成dump文件的路径,也可以指定文件名称,例如:-xx:heapdumppath=${目录}/java_heapdump.hprof.如果不指定文件名,默认为:java____heapdump.hprof.

浮山县13110017018: 如何在MyEclipse中设置JVM内存 -
威虞怡平: 方法一:打开eclipse,选择Window--Preferences...在对话框左边的树上双击Java,再双击Installed JREs,在右边选择前面有对勾的JRE,再单击右边的“Edit”按钮,出现一个 Edit JRE 的对话框,在其中的Default VM Arguments: 框中输入 ...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网