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

Posted

篇首语:自然界没有风风雨雨,大地就不会春华秋实。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 关于设置Java虚拟机(JVM)的内存问题相关的知识,希望对你有一定的参考价值。

关于设置Java虚拟机(JVM)的内存问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  最近做毕设时 遇到了一点小问题 在解析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】

cha138/Article/program/Java/hx/201311/26103

相关参考

知识大全 java虚拟机管理大内存

 众所周知jvm的内存是受限的一为机器的体系架构二为操作系统本身xxSPARC的内存映射是不同而各操作系统的内存管理机制也有区别以下是来自;Heap设定与垃圾回收JavaHeap分为个区Yo

知识大全 发现Java虚拟机内存泄露问题

发现Java虚拟机内存泄露问题  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!内存泄露问题对于程序来

知识大全 JAVA文件编译执行与虚拟机(JVM)介绍

JAVA文件编译执行与虚拟机(JVM)介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Jav

知识大全 64位计算中的Java虚拟机(JVM)性能测试

64位计算中的Java虚拟机(JVM)性能测试  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  随

知识大全 深入Java虚拟机之内存优化

深入Java虚拟机之内存优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 提高代码质量及字节码防止内存错误

  大多Java程序员知道他们的程序通常不会被编译为本机代码而是被编译为由java虚拟机(JVM)执行的字节码格式然而很少有java程序员曾经看过字节码因为他们的工具不鼓励他们去看大多Java调试工具

知识大全 深究Java虚拟机

深究Java虚拟机  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!JVM:JavaVirtualMa

知识大全 用java监视系统进程的两个解决方案

  用第一个java虚拟机启动另一个虚拟机并用第一个虚拟机的java程序去测试另一个虚拟机上java程序运行时的内存CPU资源占用情况  解决问题的限制和条件  》两个虚拟机运行在同台Windows_

知识大全 关于jvm的内存限制的问题的解决办法

  jdk编译器对内存的支持不同client状态和server状态不同后者支持更大些操作系统不同也存在不同位操作系统就比位操作系统大  测试方法在命令行下用javaXmxXXXXMversion命令来

知识大全 Eclipse中进行JVM内存设置

Eclipse中进行JVM内存设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb