java启动如何设置JAR包内存大小

目录
  • java启动设置JAR包内存大小
  • 给自己的jar包运行时分配内存大小
    • JVM的一些参数设置
  • 总结

java启动设置JAR包内存大小

亲测可用!

java -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M -jar a.jar

-Xms256m -Xmx512m: 对象使用的内存,也称堆内存

PermSize 类使用的内存,也称永久内存

由于Spring-boot内置tomcat,默认内存占用可能很大,最好设置下jar启动占用的内存。

给自己的jar包运行时分配内存大小

java -jar -Xms8m -Xmx8m -XX:PermSize=8M -XX:MaxPermSize=16M  bankmock-0.0.1-SNAPSHOT.jar

说明:

  • Xms:堆内存初始大小
  • Xmx:堆内存最大值
  • PermSize:永久内存初始大小
  • MaxPermSize:永久内存最大值

上边是启动jar包时设置的jvm参数;

自己打一个包,springboot搭建的,打包后40多兆。

当我们在windows上cmd进入启动的时候,当我设置的启动参数为:

java -jar -Xms8m -Xmx8m -XX:PermSize=8M -XX:MaxPermSize=16M  bankmock-0.0.1-SNAPSHOT.jar

会发现内存溢出了,说明我们分配的内存不够,最后我 进行多次实验后,找到了最小值:

java -jar -Xms8m -Xmx16m -XX:PermSize=8M -XX:MaxPermSize=16M  bankmock-0.0.1-SNAPSHOT.jar 

我们发现服务正常启动了。

JVM的一些参数设置

#常用的设置
-Xms:初始堆大小,JVM 启动的时候,给定堆空间大小。 

-Xmx:最大堆大小,JVM 运行过程中,如果初始堆空间不足的时候,最大可以扩展到多少。 

-Xmn:设置堆中年轻代大小。整个堆大小=年轻代大小+年老代大小+持久代大小。 

-XX:NewSize=n 设置年轻代初始化大小大小 

-XX:MaxNewSize=n 设置年轻代最大值

-XX:NewRatio=n 设置年轻代和年老代的比值。如: -XX:NewRatio=3,表示年轻代与年老代比值为 1:3,年轻代占整个年轻代+年老代和的 1/4 

-XX:SurvivorRatio=n 年轻代中 Eden 区与两个 Survivor 区的比值。注意 Survivor 区有两个。8表示两个Survivor :eden=2:8 ,即一个Survivor占年轻代的1/10,默认就为8

-Xss:设置每个线程的堆栈大小。JDK5后每个线程 Java 栈大小为 1M,以前每个线程堆栈大小为 256K。

-XX:ThreadStackSize=n 线程堆栈大小

-XX:PermSize=n 设置持久代初始值	

-XX:MaxPermSize=n 设置持久代大小

-XX:MaxTenuringThreshold=n 设置年轻带垃圾对象最大年龄。如果设置为 0 的话,则年轻代对象不经过 Survivor 区,直接进入年老代。

#下面是一些不常用的

-XX:LargePageSizeInBytes=n 设置堆内存的内存页大小

-XX:+UseFastAccessorMethods 优化原始类型的getter方法性能

-XX:+DisableExplicitGC 禁止在运行期显式地调用System.gc(),默认启用	

-XX:+AggressiveOpts 是否启用JVM开发团队最新的调优成果。例如编译优化,偏向锁,并行年老代收集等,jdk6纸之后默认启动

-XX:+UseBiasedLocking 是否启用偏向锁,JDK6默认启用	

-Xnoclassgc 是否禁用垃圾回收

-XX:+UseThreadPriorities 使用本地线程的优先级,默认启用	

等等等......

小结一下:

我们在自己开发项目的时候,需要部署到服务器上,那么运维人员会问你,你的项目需要多大内存才能启动起来呀,有的人就说管他的,越大越好,随便开口就说1024M,2048M等等,其实我们自己在本地测试一下就知道了呀

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java启动jar包修改JVM默认内存问题

    目录 JVM默认物理内存 设置JVM内存的参数有四个 操作步骤 1.执行命令:free -h 2.执行命令:top 3. 启动jar包 4. 如果是tomcat项目启动 总结 JVM默认物理内存 JVM初始分配的内存由-Xms指定,默认是物理内存的1/64:JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4. 默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制:空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制. 因此服务器一般设置-Xms.-Xmx相等以避免在

  • java启动jar包将日志打印到文本的简单操作

    启动命令: java -jar weichi-1.0.0.jar 将命令打印到1.log上 java -jar weichi-1.0.0.jar > 1.log 补充知识:Java中日志的使用(包含指定日志信息输出到指定地方) 一.前言 对于我们开发者而言,日志存在的意义十分重大:本文主要是自己整理了关于日志的一些知识点,希望能帮助到需要的人,也希望各位能指出我的错误. 二.日志的作用 ① 记录运行信息,方便调试 ② 记录错误信息,方便排查错误 ③ 存储运行记录,方便后期的数据分析 三.日志的主

  • java后台启动jar包的一些命令汇总

    目录 java后台启动jar包 启动方式一 启动方式二 启动方式三: nohup命令 启动方式四 扩展:java -jar后台启动的四种方式 java后台启动jar包 启动方式一 在jar包所在文件夹打开命令窗口,输入以下命令 java -jar app.jar特点:当前ssh窗口被锁定,可按CTRL + C打断程序运行,或直接关闭窗口,程序退出 启动方式二 java -jar app.jar &&代表在后台运行.特定:当前ssh窗口不被锁定,但是当窗口关闭时,程序中止运行. 启动方式三:

  • java启动如何设置JAR包内存大小

    目录 java启动设置JAR包内存大小 给自己的jar包运行时分配内存大小 JVM的一些参数设置 总结 java启动设置JAR包内存大小 亲测可用! java -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M -jar a.jar -Xms256m -Xmx512m: 对象使用的内存,也称堆内存 PermSize 类使用的内存,也称永久内存 由于Spring-boot内置tomcat,默认内存占用可能很大,最好设置下jar启动占用的

  • java动态添加外部jar包到classpath的实例详解

    java动态添加外部jar包到classpath的实例详解 前言: 在项目开发过程中我们有时候需要动态的添加外部jar包,但是具体的业务需求还没有遇到过,因为如果动态添加外部jar包后,我们就需要修改业务代码,而修改代码就需要重新启动服务,那样好像就没有必要动态添加外部jar包了,怎么样才能不重新启动服务器就可以使用最新的代码我没有找到方法,如果各位知道的话给我点建议,回归主题,实现动态添加外部jar包到classpath的方法如下: String beanClassName = "com.dy

  • 使用IDEA将Java/Kotliin工程导出Jar包的正确姿势

    导出的 Jar 包无法运行? 导出的 Jar 包找不到 Main class? 大概是我对导出 Jar 包的理解不深吧,反正一直不太懂 IDEA 导出 Jar 包的界面和功能到底怎么用.但总算是自己摸索出了正确的方法. 第一步:添加构建 首先要介绍的是 Artifact 这个概念,可以理解为一种构建,比如说 Android Studio 构建出来的 Artifact 就是 Apk 文件.Java 程序当然是可以构建出 Jar 包的. 在一个 Java 或 Kotlin 工程中,在 IDEA 的顶

  • idea中将单个java类导出为jar包文件的方法

    前言 idea作为一个java开发的便利IDE工具,个人是比较喜欢的,今天来探索个小功能: 导出单个类文件为jar包! JAR文件的全称是Java Archive File,意思就是Java档案文件.通常JAR文件是一种压缩文件,与常见的ZIP压缩文件兼容,同城也被称为JAR包.JAR文件与zip文件的去区别就是在JAR文件中默认包含了一个名为META-INF/MANIFEST.MF的清单文件,这个清单文件是在生成JAR文件时系统自动创建的. 当开发了一个应用程序后,这个应用程序包含了很多类,如

  • java如何反编译jar包并修改class文件重新打包

    目录 反编译jar包并修改class文件重新打包 解决思路 jar包反编译后修改源码再编译 1.场景 2.详细步骤 反编译jar包并修改class文件重新打包 这两天碰到一个需求:需要修改一个jar包中的逻辑代码,并且重新打包 本来是很简单的问题,但是因为这个jar包不是可执行的jar包(没有main方法入口),jar反编译之后又是不能通过idea重新打包,因为jar是混乱的 所以费了点时间,在此记录下 解决思路 反编译jar包 首先用一些反编译工具类似 jad-gui 之类的 ,将项目反编译成

  • Java之maven打完jar包之后将jar包放到指定位置汇总

    目录 前言 方式一 方式二 方式三 方式四 方式五 总结 前言 maven打完jar包之后,默认放置位置是target目录 有时候项目需要,如何将jar包放置到指定的目录呢? 方式一 通过maven-jar-plugin指定outputDirectory输出路径 可以排除某些配置文件,没有文件夹的话会自动创建! <plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>m

  • Eclipse创建java程序可执行jar包教程

    一.eclipse中,在要打成jar包的项目名上右击,出现如下弹出框,选择"export": 二.在接下来出现的界面中点击"jar file",然后next: 三.在接下来出现的界面中,如图所示勾选上要打包的项目以及其他选项,例如test项目:然后点击右边箭头所指的browse,选择打好的jar包要保存的目录,同时给自己的jar包命名,例如我这里选择存放在桌面,名字为jarTest;然后点击"next",在之后弹出的界面中再点击一次"n

  • Java命令行下Jar包打包小结

    jar包打包实现 jar包打包可以使用jar指令实现打包,在命令行中输入jar可以查看jar指令的内容 从最后显示的两个示例看出存在两种打包的方法,两者的区别就是是否使用自己定义的MANIFEST清单文件.第一个示例没有使用MANIFEST文件进行打包,所以最终生成的jar包中MANIFEST文件为默认文件,这种方式适用于比较简单的jar包结构,不存在其他jar包依赖以及生成的jar包不需要可执行.这种方式生成的jar包不能使用java -jar XXX.jar命令执行,因为MANIFEST文件

  • Java 使用反射调用jar包中的类方式

    下面讲展示的是从image.jar包中调用image.Buddy类的方法. public class Main { public static void main(String[] args) { try { // 两种方式都可以 URL url = new File("/Users/wuchen/Documents/IntelliJIDEA/Applet/out/production/Applet/image.jar").toURI().toURL(); // URL url = n

  • Java中实现将jar包内文件资源释放出来

    目录 Java将jar包内文件资源释放出来 jar包的动态加载和释放 Java将jar包内文件资源释放出来 有些时候我们需要读取并释放jar包内文件到jar包外.这样其实很简单,使用InputStream和OutputStream即可. 文件在jar包中时,一般是先读取他们,再输出.以我这里为例: 可以看到我这里的代码文件目录结构,代码文件夹根目录下有一个a.txt,还有一个test文件夹,其中有一个Test类和b.txt,sda.pdf. 打包为jar后结构不变,如下: 现在演示文件输出,把j

随机推荐