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相等以避免在每次GC后调整堆的大小。
设置JVM内存的参数有四个
-XmxJava Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定;
-XmsJava Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值;
-XmnJava Heap Young区大小,不熟悉最好保留默认值;
-Xss每个线程的Stack大小,不熟悉最好保留默认值;
操作步骤
1.执行命令:free -h
查询当前的内存占用情况(Mem是当前物理内存使用情况,Swap是swap交换分区使用情况)
2.执行命令:top
查看各个应用的内存占用情况
第一行:
10:51:46— 当前系统时间
601days, 17:08— 系统已经运行了601天17小时8分钟(在这期间没有重启过)
1users — 当前有1个用户登录系统
load average: 0.86, 0.73, 0.74 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行:
Tasks — 任务(进程),系统现在共有163个进程,其中处于运行中的有1个,162个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
3. 启动jar包
java -Xms1024m -Xmx1024m -Xmn700m -Xss16m -jar?xxx.jar &
-Xms1024m 设置JVM促使内存为1024M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmx1024m ,设置JVM最大可用内存为1024M。
-Xmn700m**:**设置年轻代大小为700M。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的 3/8。
-Xss16m:
4. 如果是tomcat项目启动
则在bin目录下,执行命令:vim catalina.sh,然后在顶部加上:
JAVA_OPTS="-Xms1024m -Xmx1024m -Xmn700m -Xss16m"
重新启动项目之后,执行命令查询修改情况:jps -v
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
Java JVM内存区域详解
目录 程序计数器 Java虚拟机栈 方法/函数如何调用? 堆 总结 原网页:JavaGuide JVM在执行Java程序过程中会把它管理的内存划分成若干个不同的数据区域.JDK1.8和之前的版本略有不同,下面会介绍到. JDK1.8之前: JDK1.8之后: 这其中线程私有的: 虚拟机栈: 程序计数器: 本地方法栈: 线程共享的: 堆: 方法区: 直接内存(非运行时数据区的一部分) 程序计数器 程序计数器是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器.字节码解释器工作时通过改
-
Java 对象在 JVM 中的内存布局超详细解说
目录 一.new 对象的几种说法 二.Java 对象在内存中的存在形式 1. 栈帧(Frame) 2. 对象在内存中的存在形式 ① 3. 对象中的方法存储在那儿? 4. Java 对象在内存中的存在形式 ② 三.类中属性详细说明 四.细小知识点 1. 如何创建对象 2. 如何访问属性 五.Exercise 六.总结 一.new 对象的几种说法 初学 Java 面向对象的时候,实例化对象的说法有很多种,我老是被这些说法给弄晕. public class Test { public static v
-
使用MAT进行JVM内存分析实例
目录 背景描述 基础知识 MAT简介 Heap Dump 获取Dump 分析实战 总结 背景描述 公司小程序商城项目,服务器为阿里云. 前段时间总是出现服务器CPU报警现象(设置的阈值为95%,CPU使用率大于95%会自动报警). 通过占用命令查看,迅速锁定当前运行的java进程. 基础知识 MAT简介 Eclipse Memory Analyzer是一个快速且功能丰富的Java堆分析器,可帮助您查找内存泄漏并减少内存消耗. 使用Memory Analyzer分析具有数亿个对象的高效堆转储,快速
-
java内存模型jvm虚拟机简要分析
目录 主内存和工作内存 内存间的交互操作 原子性.可见性.有序性 原子性 可见性 有序性 主内存和工作内存 Java 内存模型规定了所有的变量都存储在主内存中, 每条线程有自己的工作内存 线程的工作内存中保存了被该线程使用的变量的主内存副本, 线程对变量的所有操作 (读取.赋值等) 都必须在工作内存中进行, 而不能直接读写主内存中的数据 不同的线程之间也无法直接访问对方工作内存中的变量, 线程间变量值的传递均需要通过主内存来完成 内存间的交互操作 原子性.可见性.有序性 Java 内存模型是围绕
-
深入理解Java虚拟机 JVM 内存结构
目录 前言 JVM是什么 JVM内存结构概览 运行时数据区 程序计数器 Java虚拟机栈 本地方法栈 方法区 运行时常量池 Java堆 直接内存 前言 JVM是Java中比较难理解和掌握的一部分,也是面试中被问的比较多的,掌握好JVM底层原理有助于我们在开发中写出效率更高的代码,可以让我们面对OutOfMemoryError时不再一脸懵逼,可以用掌握的JVM知识去查找分析问题.去进行JVM的调优.去让我们的应用程序可以支持更高的并发量等......总之一句话,学好JVM很重要! JVM是什么 J
-
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窗口不被锁定,但是当窗口关闭时,程序中止运行. 启动方式三:
-
SpringBoot工程搭建打包、启动jar包和war包的教程图文详解
工程搭建 1.File->new->project: 2.选择"Spring Initializr",点击next:(jdk1.8默认即可) 3.完善项目信息,组名可不做修改,项目名可做修改:最终建的项目名为:test,src->main->java下包名会是:com->example->test:点击next: 4.Web下勾选Spring Web Start,(网上创建springboot项目多是勾选Web选项,而较高版本的Springboot没
-
Java 获取 jar包以外的资源操作
在使用 jar 执行 java 代码时,有一个需求是从 jar 包所在目录的同级目录下读取配置文件的需求,从网上找了很多方法感觉都挺复杂的, 在这里总结一下. 以classpath 开头的 URL 表示该文件为jar包内文件的路径. 如:classpath://config/app.config表示jar包根路径config文件夹下的app.config文件 以file开头的URL表示该文件为jar 包外文件的路径 如:file://./config/app.config表示 摘要 // 当前我
-
java生成jar包的方法
本文实例讲述了java生成jar包的方法,是非常实用的技巧.分享给大家供大家参考.具体分析如下: 很多Java初学者都会有这样的疑问:Java编写的application程序是否能够最终形成一个类似于exe一样的可执行文件,难道就只能用命令行运行? 通常来说有两种方法,一种是制作一个可执行的JAR文件包,然后就可以像.chm文档一样双击运行了:而另一种是使用JET来进行编译.但是JET是要用钱买的,而且据说JET也不是能把所有的Java程序都编译成执行文件,性能也要打些折扣.所以,使用制作可执行
-
java生成jar包并且单进程运行的实例
java文件打包jar运行 有效步骤: 1.cmd 到当前目录(默认包主类所在目录为例) set classpath = 默认包主类所在目录 2.javac 主类名.java 3.java 主类名 4.写清单文件 Manifest-Version: 1.0 Created-By: 1.8.0 (Sun Microsystems Inc.) Main-Class: 主类名 created-by 版本号 不知道 -> 进cmd 输入java -version 5.jar cfm 自定义.jar MA
-
Linux启动jar包的shell脚本
背景: 项目设备端需要运行jar包程序与服务端进行socket连接并发送数据,每次启动进程时,都需要在Linux终端输入启动jar包的命令,比较繁琐,随之尝试将启动jar包的命令写入shell脚本文件中,实现操作shell脚本启动jar包程序的功能. 编写的socdev.sh脚本文件中命令如下: #启动命令所在目录 HOME='/home/pi/Desktop/java' #获取mac地址(唯一的) mac=`ifconfig | grep eth0 | awk '{print $5}'` st
-
Java关于jar包的知识详解
在学习jar包之前,要先弄懂Java包,以及关于Java包的相关概念. 一.包 为了更好地组织类,Java提供了包机制.包是类的容器,用于分隔类名空间.如果没有指定包名,所有的示例都属于一个默认的无名包. 格式为: package pkg1[.pkg2[.pkg3-]]: 代码实例: package cn.com.zhouzhou;//包名一定要由小写字母组成 public class Lession1 { public static void main(String[] args) { Sys
-
java打jar包的几种方式详解
一.制作只含有字节码文件的jar包 我们先来看只含有字节码文件,即只含有class文件的jar包怎么制作,这是最简单的形式 1.最简单的jar包--直接输出hello 最终生成的jar包结构 META-INF Hello.class 方法步骤 (1)用记事本写一个Hello.java的文件 class Hello{ public static void main(String[] agrs){ System.out.println("hello"); }
随机推荐
- iredmail下安装脚本分析(一)---get_all.sh 文件所在目录为PKGS
- oracle 11g RAC 常用命令整理分享
- AngularJS 实现弹性盒子布局的方法
- Linux环境下nodejs的安装图文教程
- Swift的函数式编程详解
- javascript下string.format函数补充
- C#中一些你可能没用过的调试窗口的方法
- python支持断点续传的多线程下载示例
- 异步/多线程/任务/并行编程之一:如何选择合适的多线程模型?
- Android实现广告图片轮播效果
- datagrid不可编辑行有关问题的控制方法
- Node.js中流(stream)的使用方法示例
- PHP导航下拉菜单的实现如此简单
- Android手势识别功能
- 网站推广的几点规则和方法
- Android ADT 离线下载操作步骤
- jQuery UI插件自定义confirm确认框的方法
- 一款jquery特效编写的大度宽屏焦点图切换特效的实例代码
- 用box固定长宽实现图片自动轮播js代码
- Java替换int数组中重复数据的方法示例