长期以来一直都是做java应用的开发,所使用的开发工具基本上也都是基于java的,经常用的有eclipse, netbeans,

ant, maven, cruisecontrol, tomcat,

findbugs等。在使用这些工具的时候,有时候会碰到OutOfMemory的问题。

问题

一般在遇到这个问题的时候,我们的第一印象是:一定是机器的内存不够用了。

可是通过进程管理器查看,物理内存都还有好多空余呢,根本就没有被占满。

那这又是什么原因呢?

直接原因是:在启动某个基于java的程序时,同时会设置一些参数以限制这个程序对内存的使用(如果不人工设置的话,也会有默认的设置),那么

java虚拟机在启动并运行这个程序的时候,就会按照设定的内存大小来运行,而当程序运行时需要更大内存的话,就可能会抛出异常。比如说,启动时我设置某

程序最大使用100M内存,那么,当这个程序需要使用100M以上内存时,就会抛出OutOfMemory的异常。

具体解释

具体如下,在使用命令java和javaw时,命令行格式如下,其中"argument"部分就可以设置一些参数。

java [ options ] class [ argument ... ]

java [ options ] -jar file.jar [ argument ... ]

javaw [ options ] class [ argument ... ]

javaw [ options ] -jar file.jar [ argument ... ]

这里,跟内存使用相关的参数主要有三个:Xmx, Xms,Xss。

参考资料2中提供了这三个参数的相关说明。

-Xmsn

Specify the initial size, in bytes, of the memory allocation pool. This

value must be a multiple of 1024 greater than 1MB. Append the letter k

or K to indicate kilobytes, or m or M to indicate megabytes. The default

value is chosen at runtime based on system configuration. For more

information, see

Examples:

-Xms6291456

-Xms6144k

-Xms6m

-Xmxn

Specify the maximum size, in bytes, of the memory allocation pool. This

value must a multiple of 1024 greater than 2MB. Append the letter k or K

to indicate kilobytes, or m or M to indicate megabytes. The default

value is chosen at runtime based on system configuration. For more

information, see

Examples:

-Xmx83886080

-Xmx81920k

-Xmx80m

-Xssn

Set thread stack size.

简单的总结一下。

Xms

是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的快一点,但是也可能会导致机器暂时间变慢。

Xmx

是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出OutOfMemory异常。

Xss

是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程大约需要占用多少内存,可能会有多少线程同时运行等。

以上三个参数的设置都是默认以Byte为单位的,也可以在数字后面添加[k/K]或者[m/M]来表示KB或者MB。而且,超过机器本身的内存大小也是不可以的,否则就等着机器变慢而不是程序变慢了。

因此,对于一般的java应用程序来讲,我们只要把前两个参数设置合适基本上就可以了。第三个参数还是需要有很强的

各应用程序的设置方法

1. 自开发的应用程序

我们启动时是以命令行方式启动,那么在命令行中加入Xms和Xmx即可。

Sample: java -jar test.jar -Xms32m -Xmx512m

2. eclipse

用文本编辑软件打开eclipse根目录下的eclipse.ini文件,修改里面的Xms和Xmx的值。

3. maven

有两种方法。

1). 用文本编辑软件打开%MAVEN_HOME%\bin下的mvn.bat文件(unix/linux为mvn),里面有一行设置MAVEN_OPTS的注释行,在maven 2.0.5中内容如下:

@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000

我们只要在这行下面添加下面的一行即可。

set MAVEN-OPTS=-Xms32m -Xmx512m

2). 因为我们是使用命令行来调用maven的,所以可以在调用mvn之前,先执行上面那一行,这也是可以的。

4. ant, findbugs, cruisecontrol等程序的设置方法和maven是类似的。

ant有ANT_OPTS, findbugs有jvmargs, cruisecontrol有CC_OPTS。

5. 有些程序是在别的GUI程序中启动的,比如说在eclipse中启动web服务器(tomcat等)。类似于这样的启动方式,我们一般可以在宿主程序(本例中为eclipse)中的某个设置画面上找到关于启动参数的设置的。

java参数-xms_java 启动参数 xms相关推荐

  1. eclipse java启动参数_Eclipse启动参数设置

    -vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M 这里有几个问题: 1. 各个参数的含义什么? 2. 为什么有的机器我将- ...

  2. idea java opts_idea为java程序添加启动参数(program arguments,vm arguments,Environment variable),并在程序中获取使用...

    # 一.问题描述 # ## 1. 开发环境 ## 1. idea2019 2. jdk1.8 3. win10 在实际的项目开发中我们经常需要为java程序添加一些启动参数(又叫java启动命令),比 ...

  3. java启动参数_Java启动参数的思考

    1. -XX:+DisableExplicitGC Java在实现RMI Server的时候会通过定时的调System.gc来强制做GC(即使程序里没用到RMI也会被启动),这个动作非常烦人,另外也是 ...

  4. eclipse java启动参数_eclipse 启动参数

    如果你觉得你的Eclipse在启动的时候很慢(比如说超过20秒钟),也许你要调整一下你的Eclipse启动参数了,以下是一些``小贴士'': 1. 检查启动Eclipse的JVM设置. 在Help\A ...

  5. python 启动参数_python启动参数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 开发准备cas 的 python sdk 包含了用于访问和操作 cas 的所有 ...

  6. linux 启动 参数,Linux启动参数

    Linux启动参数 发布时间:2008-09-03 15:46:31来源:红联作者:Sednol linux noapic (跳过硬件检测) linux pci=noapic (跳过PCI卡部分硬件检 ...

  7. cmd.exe_参数_启动参数

    启动命令解释程序 Cmd.exe 的新范例.如果在不含参数的情况下使用,cmd 将显示操作系统的版本和版权信息. 语法 cmd [{/c | /k}] [/s] [/q] [/d] [{/a | /u ...

  8. php-fpm 的参数,php-fpm启动参数配置详解

    pid = run/php-fpm.pid #pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启 error_log = log/php-fpm.log #错误日志,默认在 ...

  9. tomcat7修改内存 win_详解Windows下调整Tomcat启动参数的实现方法

    Windows下调整Tomcat启动参数 Tomcat默认可以使用的内存为128MB,对于访问数比较多.比较吃内存的应用来说,这是不够的.我们可以通过调整Java虚拟机的启动参数来增加Tomcat可使 ...

最新文章

  1. 博士大佬整理的机器学习算法知识手册 | 附PDF下载
  2. 成都(10月24日时代广场)Windows 7社区发布活动
  3. nyist 一笔画问题
  4. Thinkphp5.0快速入门笔记(1)
  5. beacon帧字段结构最全总结(三)——VHT字段总结
  6. bootstrap轮播,播放到最后一张图片的时候,就不正确了。
  7. Memcached 在linux上安装笔记
  8. css实现简单的告警提示动画效果
  9. spring jdbcTemplate 插入对象返回主键值
  10. Java并发编程-八锁问题带你彻底理解对象锁和类锁
  11. double float区别 java,float和double有什么区别?
  12. linux tee 日志输出_25 个 Linux 下最炫酷又强大的命令行神器,你用过其中哪几个呢?...
  13. 欧姆龙cp1h指令讲解_欧姆龙PLC功能指令
  14. 计算机软硬件的组成及主要技术指标,计算机软硬件系统的组成及主要技术指标...
  15. 推荐各类工具网站(数据可视化、词频分析、词云、PPT模板、互联网趋势分析、在线调查)
  16. 如何将收藏夹栏显示在edge浏览器上方
  17. python爬wos数据库,用Python爬行WoS
  18. 基于ZYNQ+AD9361的软件无线电平台设计与实现 (2)
  19. Hadoop入门案例WordCount
  20. Axios实现zip文件下载

热门文章

  1. 微信公众号网页在本地开发模式下如何使用正式环境的域名来调试
  2. vue 微信公众号开发 网页授权 配置业务域名
  3. SSL TLS HTTP HTTPS SSH 分别是什么意思?
  4. basename 命令 详解
  5. 南大计算机学院李宇峰,【FCS优秀青年计算机科学家论坛】李宇峰:安全半监督学习综述...
  6. 中国成语测试软件,精准测试及其工具(连载1)
  7. c语言一维数组作用,c语言 一维数组 多维数组的理解
  8. phpstudy集成环境升级php版本,phpStudy官方:各版本phpstudy集成环境软件MD5码
  9. 二叉树的顺序存储结构C语言代码实现
  10. win10服务器停止响应怎么办,Win10 键鼠经常性停止响应