技术标签: jvm
java [options] MainClass [arguments]
options - JVM启动参数。 配置多个参数的时候,参数之间使用空格分隔。
参数命名: 常见为 -参数名
参数赋值: 常见为 -参数名=参数值 | -参数名:参数值
-Xms:初始堆大小,JVM启动的时候,给定堆空间大小。
-Xms3550m,设置JVM初始内存为3550m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xmx:最大堆大小,JVM运行过程中,如果初始堆空间不足的时候,最大可以扩展到多少。
-Xmx3550m:设置JVM最大可用内存为3550M。
-Xmn:设置年轻代大小。
整个堆大小 = 年轻代大小 + 老年代大小 + 持久代大小。持久代一般固定大小为64m,所以增大年轻代后,将会减小年老代大小。此值对系统性能影响较大,Sun官方推荐配置为整个堆的3/8。
-Xmn2g:设置年轻代大小为2G。
-Xss: 设置每个线程的Java栈大小。
JDK5.0以后每个线程Java栈大小为1M,以前每个线程堆栈大小为256K。根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。
-Xss128k:设置每个线程的堆栈大小为128k。
-XX:NewSize=n:设置年轻代大小。
-XX:NewRatio=n:设置年轻代(包括Eden和两个Survivor区)与年老代的比值。
比如设置为4,则年轻代与年老代所占比值为1:4,年轻代占整个堆栈的1/5
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。
注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5。
-XX:MaxPermSize=n:设置永久代大小
-XX:MaxPermSize=16m:设置持久代大小为16m。
-XX:MaxTenuringThreshold=n:设置垃圾最大年龄。
如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代。对于年老代比较多的应用,可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象再年轻代的存活时间,增加在年轻代即被回收的概率。
JVM给了三种选择:串行收集器、并行收集器、并发收集器。串行收集器只适用于小数据量的情况。
-XX:+UseSerialGC: 设置串行收集器。
-XX:+UseParallelGC: 设置并行收集器,表示年轻代使用并行收集器。
-XX:+UseParNewGC: 设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值。
-XX:+UseParallelOldGC: 设置并行年老代收集器,JDK6.0支持对年老代并行收集。
-XX:+UseConcMarkSweepGC: 设置年老代并发收集器CMS。
-XX:+UseG1GC: 设置G1收集器
-XX:ParallelGCThreads=n: 设置并行收集器收集时最大线程数使用的CPU数。并行收集线程数。
-XX:MaxGCPauseMillis=n: 设置并行收集最大暂停时间,单位毫秒。可以减少STW时间。
-XX:GCTimeRatio=n: 设置垃圾回收时间占程序运行时间的百分比。公式为 1/(1+n) 并发收集器设置
-XX:+CMSIncrementalMode: 设置为增量模式。适用于单CPU情况。
-XX:+UseAdaptiveSizePolicy: 设置此选项后,并行收集器会自动选择年轻代区大小和相应的Survivor区比例,以达到目标系统规定的最低相应时间或者收集频率等,此值建议使用并行收集器时,一直打开。
-XX:CMSFullGCsBeforeCompaction=n: 由于并发收集器不对内存空间进行压缩、整理,所以运行一段时间以后会产生“碎片”,使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。
-XX:+UseCMSCompactAtFullCollection: 打开对年老代的压缩。可能会影响性能,但是可以消除碎片。
JVM提供了大量命令行参数,打印信息,供调试使用。商业项目上线的时候,不允许使用。一定使用loggc。主要有以下一些:
-XX:+PrintGC
输出形式:[GC 118250K->113543K(130112K), 0.0094143 secs]
[Full GC 121376K->10414K(130112K), 0.0650971 secs]
-XX:+PrintGCDetails
输出形式:[GC [DefNew: 8614K->781K(9088K), 0.0123035 secs] 118250K->113543K(130112K), 0.0124633 secs]
[GC [DefNew: 8614K->8614K(9088K), 0.0000665 secs][Tenured: 112761K->10414K(121024K), 0.0433488 secs] 121376K->10414K(130112K), 0.0436268 secs]
-XX:+PrintGCTimeStamps -XX:+PrintGC:PrintGCTimeStamps可与上面两个混合使用
输出形式:11.851: [GC 98328K->93620K(130112K), 0.0082960 secs]
-XX:+PrintGCApplicationConcurrentTime: 打印每次垃圾回收前,程序未中断的执行时间。可与上面混合使用
输出形式:Application time: 0.5291524 seconds
-XX:+PrintGCApplicationStoppedTime: 打印垃圾回收期间程序暂停的时间。可与上面混合使用
输出形式:Total time for which application threads were stopped: 0.0468229 seconds
-XX:PrintHeapAtGC: 打印GC前后的详细堆栈信息
-Xloggc:filename: 与上面几个配合使用,把相关日志信息记录到文件以便分析。
响应时间优先的应用:尽可能设大,直到接近系统的最低响应时间限制(根据实际情况选择)。在此种情况下,年轻代收集发生的频率也是最小的。同时,减少到达老年代的对象。
吞吐量优先的应用:尽可能的设置大,可能到达Gbit的程度。因为对响应时间没有要求,垃圾收集可以并行进行,一般适合8CPU以上的应用。
响应时间优先的应用: 老年代使用并发收集器,所以其大小需要小心设置,一般要考虑并发会话率和会话持续时间等一些参数。如果堆设置小了,可以会造成内存碎片、高回收频率以及应用暂停而使用传统的标记清除方式;如果堆大了,则需要较长的收集时间。最优化的方案,一般需要参考以下数据获得:
减少年轻代和老年代花费的时间,一般会提高应用的效率
吞吐量优先的应用: 一般吞吐量优先的应用都有一个很大的年轻代和一个较小的老年代。原因是,这样可以尽可能回收掉大部分短期对象,减少中期的对象,而老年代尽存放长期存活对象。
因为老年代的并发收集器使用标记、清除算法,所以不会对堆进行压缩。当收集器回收时,他会把相邻的空间进行合并,这样可以分配给较大的对象。但是,当堆空间较小时,运行一段时间以后,就会出现“碎片”,如果并发收集器找不到足够的空间,那么并发收集器将会停止,然后使用传统的标记、清除方式进行回收。如果出现“碎片”,可能需要进行如下配置:
文章浏览阅读331次,点赞11次,收藏5次。穿透力小于10牛,但对于所有其他测试,100牛的能力是合适的。为了规范到达医疗保健一线的产品,注射器针头的测试标准是必要的。穿透基板的选择对于从测试中收集有效数据至关重要,并且确保在测试之前教授基板层对于获得可重复的结果也非常重要。这包括针的拔出力和穿透力。对于与基于墨盒的笔式注射器一起使用的针头,如典型的胰岛素笔,针头组件和笔之间的相互作用也必须进行测试。ASTM F3014概述了特定于弯曲针头的针头穿透力评估,Instron提供了一种专门的弯曲针头系统,能够应用旋转运动而不是线性力来适应这种应用。
文章浏览阅读197次。RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基于经典技术组合(Spring Boot、Spring Security、MyBatis、Jwt、Vue),内置模块如:部门管理、角色用户、菜单及按钮授权、数据权限、系统参数、日志管理、代码生成等。在线定时任务配置;支持集群,支持多数据源,支持分布式事务。后端前端。_ruo-yi=vue
文章浏览阅读793次,点赞19次,收藏22次。1. 背景介绍1.1 强化学习简介强化学习(Reinforcement Learning,简称RL)是一种机器学习方法,它通过让智能体(Agent)在环境(Environment)中与环境进行交互,学习如何根据当前状态选择最优的行动,以达到最大化累积奖励的目标。强化学习的核心问题是学习一个策略(Po
文章浏览阅读1.5k次。利用tushare获得上市公司的日线行情_tushare怎么取一个股票的全部日k线
文章浏览阅读1.7k次。某些Linux系统具有一个界面,并且某些不仅仅具有命令窗口,因此导入外部文件变得困难并且没有视觉上的便利。在这里,通过安装USB闪存驱动器来复制文件。首先安装USB闪存盘:这里以centos为例1、进入命令行模式并输入命令sudo -i以获得root特权。2、mkdir / usb //创建用于安装U盘的目录3、fdisk -l //检查安装在系统中的U盘。如果系统具有硬盘sdb1,则表示您的U盘..._麒麟下命令行访问u盘文件
文章浏览阅读648次,点赞14次,收藏13次。easyx图形库_c++ easyx
文章浏览阅读29次。用户量、适用面、与时俱进、自身特点(面向对象、安全性、多线程、跨平台、简单易用、开源)2、记事本设置:设置-首选项-新建-windows-java-ANSI(设置后才可输入输出中文)2、记事本设置:设置-首选项-新建-windows-java-ANSI(设置后才可输入输出中文)开发工具:javac-编译工具,java-运行工具等等】------JDK:java开发工具包。3、java重点版本:java5、java8、java17。3、java重点版本:java5、java8、java17。
文章浏览阅读3.3k次,点赞7次,收藏4次。习题4-2 求幂级数展开的部分和 (20分)题目描述已知函数 exe^xex 可以展开为幂级数 1 + xxx + x2/2!x^2/2!x2/2! + x3/3!x^3/3!x3/3! + ⋅⋅⋅···⋅⋅⋅ + xk/k!x^k/k!xk/k! + ⋅⋅⋅···⋅⋅⋅。现给定一个实数 xxx,要求利用此幂级数部分和求 exe^xex 的近似值,求和一直继续到最后一项的绝对值小于0.0000..._习题4-2 求幂级数展开的部分和
文章浏览阅读206次。 首先来了了解下二分图的定义::二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。 估计大家看起来都不是太懂~~没事这里有简单版本::(转载于:https..._acm图论二分图
文章浏览阅读339次。系统环境:RedHat-5.4-linux-x86_64-DVD实验流程:1.搭建一个干净的环境(生产机就算了),nagios的运行需要apache和php的支持2.查看下nagios的源码包和nrpe的源码包的版本是否匹配(当nagios、nagios-plugin和nrpe的版本不匹配,会出现ERROR-could not complete SSL handshake)。在主机上安装这3个源码包。3.在监控的分机上安装nagios-plugin和nrpe两个源码包,不需要安装nagios的客户端。4.在_nagios linux部署
文章浏览阅读753次。三、绑定模式 通过上一文章中的示例,学习了简单的绑定方式。在这里的示例,要学习一下绑定的模式,和模式的使用效果。 首先,我们来做一个简单示例,这个示例是根据ListBox中的选中项,去改变TextBlock的背景色。将 TextBlock 的背景色绑定到在 ListBox 中选择的颜色。在下面的代码中针..._mode=twoway oneway 失去焦点
文章浏览阅读2.3k次。power bi数据清洗 In this article, we look at how to create different types of relationships between two or more tables in the Power BI data model. 在本文中,我们研究如何在Power BI数据模型中的两个或多个表之间创建不同类型的关系。 An..._power bi 不同的关联产生数据不同