JAVA开发(运行JAR包怎么指定虚拟机内存大小)

这篇具有很好参考价值的文章主要介绍了JAVA开发(运行JAR包怎么指定虚拟机内存大小)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

我们都使用过 java  -jar  xxx.jar包去运行jar包。但是有时候要指定jar包运行时内存,该怎么做,而且设置多大怎么衡量,很多人从来没有了解过。

背景:

   我们开发java程序,可能涉及到开发环境,测试环境,生产环境。然后每个环境的服务器配置可能是不一样的。比如说开发环境可能是8G的内存 测试环境是 16G的内存,生产环境是 32G的内存。那么我们运行jar的指定内存应该是不一样的,否则就造成了硬件资源的浪费。

例如:java -jar -Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxPermSize=256M XXX.jar

java -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M MyClass

各参数含义:

-Xms128m JVM初始分配的堆内存

-Xmx512m JVM最大允许分配的堆内存,按需分配

-XX:PermSize=64M JVM初始分配的非堆内存

-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配

先了解一下虚拟机内存模型:

JAVA开发(运行JAR包怎么指定虚拟机内存大小)

堆内存分配
 JVM初始分配的堆内存由-Xms指定,默认是物理内存的1/64;JVM最大分配的堆内存由-Xmx指定,默认是物理内存的1/4。默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;
 空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小。
 说明:如果-Xmx 不指定或者指定偏小,应用可能会导致java.lang.OutOfMemory错误,此错误来自JVM,不是Throwable的,无法用try...catch捕捉。 


非堆内存分配
 JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。(还有一说:MaxPermSize缺省值和-server -client选项相关,
 -server选项下默认MaxPermSize为64m,-client选项下默认MaxPermSize为32m。这个我没有实验。)
 上面错误信息中的PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。还没有弄明白PermGen space是属于非堆内存,还是就是非堆内存,但至少是属于了。
XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space 就是内存益出。 

所谓JVM的优化个人觉得有三重境界。
第一重境界:就是对你的业务代码使用对象的优化,选择合适的数据类型,选择合适的算法,选择合适的函数调用,声明合适的空间存储。
第二重境界:就是部署你的代码时根据服务器的配置和性能选择合适的垃圾回收器,配置合适的参数。
第三重境界:对JDk的组件进行优化,如本节中string类型和hashMap的优化,优化JDK对内存的使用,优化JDK中执行引擎的调度效率。
文章来源地址https://www.toymoban.com/news/detail-441215.html

到了这里,关于JAVA开发(运行JAR包怎么指定虚拟机内存大小)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • idea修改运行内存大小

    在开发过程中,总会遇到idea运行内存不足,以下是我的解决方法 Xmx参数的调整需要根据计算机内存而来,例如:计算机内存为 8G ,可设置**-Xmx4096m**; 只修改图中标注的位置即可,然后重启IDEA  设置好你需要的内存大小,再重启IDEA

    2024年02月12日
    浏览(44)
  • 关于jar包的命令:运行jar包时指定端口、直接修改jar包里的配置文件

    如下:指定端口为8081,不管jar包里面之前是指定了什么端口号,最终访问服务时还是以8081这个端口进行访问 vim进入jar包后,会有类似如下的的内容 在定位到具体某行(文件名)后,该文件会有提示,直接回车进入编辑模式,即可编辑了

    2024年02月12日
    浏览(51)
  • 修改pycharm运行时内存大小

    pycharm如何增加运行时内存_自由的小白的博客-CSDN博客_pycharm增加内存 indexing时间过长、pycharm out of memory,xmx和xms设置_血雨腥风霜的博客-CSDN博客

    2024年03月20日
    浏览(50)
  • 3、Ubuntu22.04、查看和设置虚拟内存的大小

            在 Ubuntu 22.04 或其他类似的 Linux 发行版中,虚拟内存通常是通过交换分区(Swap)来实现的。 一、查看虚拟内存大小: 这会显示物理内存(RAM)和虚拟内存(Swap)的使用情况。关注 \\\"Swap\\\" 行,其中包含有关虚拟内存的信息。 (备注:上面我 \\\"free-h显示的结果里\\\" 本

    2024年02月19日
    浏览(64)
  • java -jar 指定端口或配置文件启动jar

    1、指定端口 2、指定配置文件 3、同时指定端口与配置文件 1、后台服务方式启动 2、加载服务器配置文件application-dev.yml

    2024年02月11日
    浏览(47)
  • java -jar指定外部配置文件

    spingboot项目部署jar时,需要时常修改配置,为了方便,将配置文件放到jar包外 在jar包同级目录下创建config文件夹(位置没有强制要求,为了方便而已) 在jar包同级目录下创建start.bat文件,并编辑内容 直接双击start.bat进行启动 启动jar之前设置参数 -Dspring.config.location 指向外部配置目录即

    2024年02月14日
    浏览(45)
  • jar 命令启动java 指定配置文件路径 jar如何启动

    一、各种启动方式 1.java -jar # 例子 java -jar test.jar 1. 2. 这是最简单的启动方式,同时弊端也是很多的。 弊端1:exit 退出终端会导致java进程中断。 弊端2:ctrl+c 退出启动展示页会导致java进程中断。 弊端3:直接关闭终端会导致java进程中断(启动时和启动完关闭都会导致java进程终

    2024年02月04日
    浏览(53)
  • 怎么修改IntelliJ IDEA的运行内存,Idea怎么设置运行内存

    idea不该在默认的小小空间内憋屈,运行起来也会卡,这里建议提整一下大运行内存,最大内存不是运行idea就真用了这么多,而是idea最大可以用这么多运行内存,接下来是设置的步骤。   Edit Custom VM Options...   如果是4g内存的,可以改为128和2048,8g的推荐设置128和4096,我的电

    2024年02月15日
    浏览(65)
  • 【C语言】什么是结构体内存对齐?结构体的大小怎么计算?

      目录 1.结构体内存对齐 对偏移量的理解:​ 2.结构体的大小计算 2.1结构体中只有普通的数据类型的大小计算 2.2 结构体中有嵌套的结构体的大小计算 3.修改默认对齐数 4.为什么存在内存对齐? 这篇文章主要介绍结构体内存对齐和如何计算大小。 在学习结构体内存对齐之前,

    2024年02月11日
    浏览(51)
  • Java Jar包项目内存设置

    64位操作系统,默认最小堆内存大小256M,最大内存为1/4可用系统内存。 -Xms512M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=128M -Xms128m JVM初始分配的堆内存 -Xmx512m JVM最大允许分配的堆内存,按需分配 -XX:PermSize=64M JVM初始分配的永久代内存大小 -XX:MaxPermSize=128M JVM最大允许分配的永久代内存

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包