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

System out println( Max Memory: + Runtime getRuntime() maxMemory() / ( * ) + MB )maxMemory()这个方法返回的是java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存 以字节为单位 totalMemory()这个方法返回的是java虚拟机现在已经从操作系统那里挖过来的内存大小 也就是java...
关于设置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
2022-10-14
mengvlog 阅读 6 次 更新于 2025-07-20 03:30:06 我来答关注问题0
  • maxMemory()这个方法返回的是java虚拟机(这个进程)能构从操作系统那里挖到的最大的内存 以字节为单位 totalMemory()这个方法返回的是java虚拟机现在已经从操作系统那里挖过来的内存大小 也就是java虚拟机这个进程当时所占用的所有内存 freeMemory为当前jvm中没有使用的内存 附 jvm参数说明 (转自)s...

  •  翡希信息咨询 如何设置eclipse jvm参数

    在Installed JREs列表中,选中你正在使用的JDK,然后点击右侧的Edit按钮。设置JVM参数:在弹出的编辑窗口中,找到Default VM Arguments输入框。在该输入框内输入你想要设置的JVM参数,例如:Xms512m Xmx512m。Xms512m表示设置Java虚拟机的最小分配内存为512MB。Xmx512m表示设置Java虚拟机的最大分配内存为51...

  •  阿暄生活 jvm是干什么的

    JVM(Java Virtual Machine,Java虚拟机)是一种用于运行Java字节码的计算设备规范。以下是关于JVM的详细解答:1. JVM的定义与功能 定义:JVM是一个虚构出来的计算机,它通过在实际的计算机上仿真模拟各种计算机功能来实现Java程序的跨平台运行。功能:JVM是Java字节码执行的引擎,它负责将Java字节码加载到内...

  •  文暄生活科普 Java虚拟机(JVM)-- Dump内存快照

    在程序开发中,Java虚拟机(JVM)扮演着重要角色,其中内存管理是关键部分。有时,理解或调试内存使用情况可能变得复杂,这时候使用内存快照工具如JProfiler就显得极为便利。JProfiler是一个强大的性能分析工具,可以帮助开发者捕获和分析Java应用的运行时性能,包括内存使用情况。要开始使用JProfiler,首先需要...

  •  武汉誉祥科技 JVM-虚拟机参数XmnXmsXmxXss有什么区别

    深入解析JVM内存配置:Xmn、Xms、Xmx与Xss的差异 在Java应用的性能优化中,JVM内存参数的精细调整起着至关重要的作用。Xmn、Xms、Xmx和Xss这四个配置选项,分别针对堆内存、初始堆大小、最大堆大小和线程栈大小,它们的设置策略能够显著影响程序的运行效率和稳定性。接下来,让我们逐一探讨这些参数的功能和...

檬味博客在线解答立即免费咨询

Java相关话题

Copyright © 2023 WWW.MENGVLOG.COM - 檬味博客
返回顶部