首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

容器环境的JVM内存设置最佳实践

对于 Java 程序,JVM 设置是一个重要的环节。这里总结下我们项目里的最佳实践。 Java Heap 基础知识 默认情况下,JVM 自动分配的 heap 大小取决于机器配置。...但是需要注意的是,JVM 实际使用的内存会比 heap 内存大: JVM内存 = heap 内存 + 线程stack内存 (XSS) * 线程数 + 启动开销(constant overhead)...为了解决这个问题,可以设置 -Xmx 或者 MaxRAM 来解决,但就想第一部分描述的一样,这样太不优雅了!...最佳实践 拉取最新的 openjdk:8-jre-alpine 作为底包,截止这篇博客,最新的版本是 212,>191。...-XX:+UseContainerSupport,设置 -XX:MaxRAMPercentage=75.0,这样为其他进程(debug、监控)留下足够的内存空间,又不会太浪费 RAM。

1.8K10
您找到你想要的搜索结果了吗?
是的
没有找到

容器环境的JVM内存设置最佳实践

Docker和K8S的兴起,很多服务已经运行在容器环境,对于java程序,JVM设置是一个重要的环节。这里总结下我们项目里的最佳实践。...但是需要注意的是,JVM实际使用的内存会比heap内存大: JVM内存 = heap 内存 + 线程stack内存 (XSS) * 线程数 + 启动开销(constant overhead) 默认的XSS...为了解决这个问题,可以设置-Xmx或者MaxRAM来解决,但就想第一部分描述的一样,这样太不优雅了!...最佳实践 拉取最新的openjdk:8-jre-alpine作为底包,截止这篇博客,最新的版本是212,>191 docker run -it --rm openjdk:8-jre-alpine java...-XX:+UseContainerSupport,设置-XX:MaxRAMPercentage=75.0,这样为其他进程(debug、监控)留下足够的内存空间,又不会太浪费RAM。

5.3K30

JVM - 应用JVM核心参数推荐设置

Pre JVM-08垃圾收集Garbage Collection【GC常用参数】 ? ---- JDK版本 = 1.8 ---- 核心参数 ?...---- 线程栈 默认1M , 不足的话 StackOverflowError -Xss设置越小 ,说明一个线程栈里能分配的栈帧就越少,但是对JVM整体来说能开启的线程数会更多 ,当然了,线程多了并不一定性能就高...对于64位JVM来说,元空间的默认初始大小是21MB,若不足,GC后自动扩容,无上限,取决于操作系统的内存大小。...---- 【经验之谈】 一般建议在JVM参数中将MetaspaceSize和MaxMetaspaceSize设置成一样的值 ,8G物理内存的机器来说,可以将这两个参数设置为256M 如果应用启动比较慢,...可以看下是不是因为方法区的JVM参数没有设置(默认值21 ,频繁GC,自动扩容)导致的。

1.5K40

JVM系列——JVM参数及如何设置

本次主要内容: 如何查看参数标准参数-X参数-XX参数Boolean类型非Boolean类型其他参数如何设置参数单位换算JVM常见参数和含义 如何查看参数 java -XX:+PrintFlagsFinal...-server:设置jvm使server模式,特点是启动速度比较慢,但运行时性能和内存管理效率很高,适用于生产环境。在具有64位能力的jdk环境下将默认启用该模式,而忽略-client参数。...-Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式,JVM自己来决定 ?...-XX参数 非标准化参数,相对不稳定,主要用于JVM调优和Debug,使用频率最高的参数。...开发工具中设置比如IDEA(前面已经演示过了),eclipse也和IDEA类似 运行jar包的时候:java -XX:+UseG1GC xxx.jar web容器比如tomcat,可以在脚本中的进行设置

4.5K20

JVM系列三:JVM参数设置、分析

本文将注重介绍JVM、GC的一些重要参数的设置来提高系统的性能。...(此项待验证) -XX:+UseParNewGC 设置年轻代为并行收集 可与CMS收集同时使用JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值 -XX:ParallelGCThreads...-XX:CMSFullGCsBeforeCompaction=0:上面配置开启的情况下,这里设置多少次Full GC后,对年老代进行压缩 用64位操作系统,Linux下64位的jdk比32位jdk要慢一些...为了避免promotion faild可能会导致xmn设置偏小,也意味着YGC的次数会增多,处理并发访问的能力下降等问题。每个参数的调整都需要经过详细的性能测试,才能找到特定应用的最佳配置。...具体操作上,32位Linux和64位Linux好像不一样,64位系统似乎只要配置MaxTenuringThreshold参数,CMS还是有暂停。

1.6K60

JVM(一)史上最佳入门指南

而作为整个JVM系列的首篇,本文将带你解除刚开始学习JVM时的种种疑惑。比如:什么是JVM?为什么学习JVM?怎么有效的学习JVM?带着以上的这些问题,让我们一起走入JVM的世界吧。...学习JVM无外乎以下几个原因: 1、 程序调优 不同的程序(业务场景)需要不同的Jvm配置,比如设置不同的垃圾收集器、设置新生代和老生带的内存配置和占比等,不同的配置对于程序的运行有着千差万别的影响。...JVM的知识点,分为如下几个: 1、 JVM的组成 只有了解了JVM的组成部分,才能算的上真正的了解了JVMJVM的组成5个部分:堆、虚拟机栈、本地方法栈、程序计数器、方法区,后面文章会分别介绍5个部分的具体用途...学习这些收集器,一方面是为自己程序配置合适的收集器,另一方面是每个收集器的设置参数都不相同,学习了这些收集器的配置之后,可以为程序设置最优的运行匹配参数。...四、总结 本文带领大家对Jvm整体的印象有了初步的认识,我们明白了Jvm的学习能带给我们的收益,以及Jvm该如何学习,而这些问题恰好是刚开始学习Jvm时最大的障碍。

38320

JVM参数汇总:JVM内存设置多大合适?Xmx和Xmn如何设置

例如: 常用的参数介绍: -Xms512m 设置JVM促使内存为512m。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。...-Xmx512m ,设置JVM最大可用内存为512M。 -Xmn200m:设置年轻代大小为200M。...-XX:CMSFullGCsBeforeCompaction=0:上面配置开启的情况下,这里设置多少次Full GC后,对年老代进行压缩 用64位操作系统,Linux下64位的jdk比32位jdk要慢一些...为了避免promotion faild可能会导致xmn设置偏小,也意味着YGC的次数会增多,处理并发访问的能力下降等问题。每个参数的调整都需要经过详细的性能测试,才能找到特定应用的最佳配置。...具体操作上,32位Linux和64位Linux好像不一样,64位系统似乎只要配置MaxTenuringThreshold参数,CMS还是有暂停。

15K100

JVM参数设置、分析

本文将注重介绍JVM、GC的一些重要参数的设置来提高系统的性能。 JVM内存组成及GC相关内容请见之前的文章:JVM内存组成 GC策略&内存申请。...(此项待验证) -XX:+UseParNewGC 设置年轻代为并行收集 可与CMS收集同时使用 JDK5.0以上,JVM会根据系统配置自行设置,所以无需再设置此值 -XX:ParallelGCThreads...-XX:CMSFullGCsBeforeCompaction=0:上面配置开启的情况下,这里设置多少次Full GC后,对年老代进行压缩 用64位操作系统,Linux下64位的jdk比32位jdk要慢一些...为了避免promotion faild可能会导致xmn设置偏小,也意味着YGC的次数会增多,处理并发访问的能力下降等问题。每个参数的调整都需要经过详细的性能测试,才能找到特定应用的最佳配置。...具体操作上,32位Linux和64位Linux好像不一样,64位系统似乎只要配置MaxTenuringThreshold参数,CMS还是有暂停。

10710

jvm 参数设置与分析

概述 之前的文章中介绍了 jvm 内存管理和垃圾收集的相关内容,结合这些理论知识,通过合理设置参数才能将系统的性能得以提升。 2. JVM 主要参数 2.1....基本的设置参数 JVM 设置参数的主要含义 参数名称 含义 默认值 说明 -Xms 最小堆大小 物理内存的 1/64(<1GB) 空闲堆内存小于40%(通过 MinHeapFreeRatio 参数可调整该阈值...并行收集相关的参数 JVM 并行GC的设置参数 参数名称 含义 默认值 说明 -XX:+UseParGC 使用 ParNew 收集器进行新生代收集 false 与 -XX:+UseConcMarkSweepGC...CMS 相关参数 JVM CMS GC 的设置参数 参数名称 含义 默认值 说明 -XX:+UseConcMarkSweepGC 启用 CMS GC false - -XX:CMSFullGCsBeforeCompaction...其他事项 1. linux 64 位操作系统中,jdk 消耗内存更多,执行速度更慢,但吞吐量更大 2.

86620

JVM 内存区域大小参数设置

jmeter工具使用系列 jmeter基础内容在线公开课 jmeter性能测试在线公开课 接口自动化课程 性能测试课程 性能测试常见面试题 性能测试技能树JVM内存包括区域 Heap(堆区)   ...Permanent Generation(持久代)   Stack(栈区)   Metaspace(元空间)   Direct ByteBuffer(堆外内存) 通过JVM...启动参数来配置以上内存空间   Heap(堆)内存大小设置   -Xms512m 设置JVM堆初始内存为512M   -Xmx1g 设置JVM堆最大可用内存为1G New Generation...(新生代)内存大小设置   -Xmn256m 设置JVM的新生代内存大小(-Xmn 是将NewSize与MaxNewSize设为一致。...设置为3,则新生代与老年代所占比值为1:3,新生代占整个堆栈的1/4 Survivor内存大小设置   -XX:SurvivorRatio=8   设置为8,则两个Survivor区与一个

8.5K21

JVM 内存区域大小参数设置

需要提前了解的知识点: JVM内存模型 JVM垃圾回收算法 下图是JVM内存区域划分的逻辑图 JVM内存区域逻辑图 从图中我们大概了解JVM相关的内存区域。...JVM内存包括区域 Heap(堆区) New Generation(新生代) Eden Survivor From Survivor To Old Generation(老年代) 方法区 Permanent...Generation(持久代) Stack(栈区) Metaspace(元空间) Direct ByteBuffer(直接内存) 下面我们就通过一些JVM启动参数来配置以上内存空间 Heap(堆)内存大小设置...-Xms512m 设置JVM堆初始内存为512M -Xmx1g 设置JVM堆最大可用内存为1G New Generation(新生代)内存大小设置 -Xmn256m 设置JVM的新生代内存大小...默认情况下,类元数据分配受到可用的本机内存容量的限制(容量依然取决于你使用32位JVM还是64位操作系统的虚拟内存的可用性)。 一个新的参数 (MaxMetaspaceSize)可以使用。

4.6K150

JVM XMX设置多大比较好,Docke容器里该怎么设置JVM呢@无界编程

XMX是JVM的最大堆内存大小,XMS是JVM的初始堆内存大小。 不管是工作还是面试经常遇到一个问题就是XMX到底设置多大比较好?...网上的答案大多是说XMX和XMS设置为一样大,但是没有说到底XMX设置多大比较好。 如果设置为和操作系统一样大内存会怎么样? 这篇文章就带你搞清楚这个问题,让你明白怎么设置,以及为什么要这么设置。...你也可以学到JDK8中改善在Docker容器中运行的Java的JVM设置注意事项。 此外这篇文章你可以学到linux环境大量实用的命令分析内存和进程信息。...java官方文档对JVM的默认值并不合理: 实际上默认值并不合理,大多数的情况你需要根据自己的系统内存值和应用情况合理调整的。...但是你还是需要先搞清楚默认值为什么这么设置,默认值是从统计学里得来的,先看这里: https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gc-ergonomics.html

57030
领券