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

2.3 JVM内存参数设置

我们可以对运行时数据区的内存进行参数设置. 这是jvm调优的重点. 参数的变化将影响到整体效率 ?...这里单独说一下spring boot项目启动的时候如何设置jvm参数?...比如内存条是8G的, 堆和栈分配了4G的空间, 那么元空间最多可以使用4G 我们可以通过参数来设置使用的最大内存 -XX:MetaspaceSize=256M     元空间的初始空间大小, 以字节位单位...对于64位的JVM来说, 元空间默认大小是21M, 元空间的默认最大值是无上限的, 他的上限就是内存空间 -XX:MetaspaceSize: 元空间的初始空间大小, 以字节位单位, 默认是21M,达到该值就会触发..., 基于这种情况, 一般建议在JVM参数中将-XX:MetaspaceSize和-XX:MaxMetaspaceSize设置成一样的值, 并设置的比初始值还要大, 对于8G物理内存的机器来说, 一般会将这两个值设置

2.9K21
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    JVM 内存区域大小参数设置

    ) 通过JVM启动参数来配置以上内存空间   Heap(堆)内存大小设置   -Xms512m 设置JVM堆初始内存为512M   -Xmx1g 设置JVM最大可用内存为1G...New Generation(新生代)内存大小设置   -Xmn256m 设置JVM的新生代内存大小(-Xmn 是将NewSize与MaxNewSize设为一致。...  堆内存减去新生代内存   如上面设置的参数举例如下:   老年代初始内存为:512M-256M=256M   老年代最大内存为:1G-256M=768M Stack...)   -XX: PermSize=128m 设置持久代初始内存大小128M   -XX:MaxPermSize=512m 设置持久代最大内存大小512M Direct ByteBuffer...在程序中可以获得-XX:MaxDirectMemorySize的设置的值 设置新生代代对象进入老年代的年龄   -XX:MaxTenuringThreshold=15   设置垃圾最大年龄

    8.8K21

    JVM 内存区域大小参数设置

    需要提前了解的知识点: JVM内存模型 JVM垃圾回收算法 下图是JVM内存区域划分的逻辑图 JVM内存区域逻辑图 从图中我们大概了解JVM相关的内存区域。...-Xms512m 设置JVM堆初始内存为512M -Xmx1g 设置JVM最大可用内存为1G New Generation(新生代)内存大小设置 -Xmn256m 设置JVM的新生代内存大小...Old Generation(老年的)的内存大小设置内存减去新生代内存 如上面设置的参数举例如下: 老年代初始内存为:512M-256M=256M 老年代最大内存为:1G-256M=768M...128M -XX:MaxPermSize=512m 设置持久代最大内存大小512M Metaspace(元空间)内存大小设置 元空间(Metaspace)(JDK8) -XX:MetaspaceSize...使用NIO可以api可以使用直接内存设置新生代代对象进入老年代的年龄 -XX:MaxTenuringThreshold=15 设置垃圾最大年龄。

    4.8K150

    JVMLinux内存的关系--进程与JVM内存空间

    JVM的堆区和普通进程的差别是最大的,下面具体详细说明: 首先是永久代。永久代本质上是Java程序的代码区和数据区。...现在分析这600m内存的分配情况: Linux保留大约200m,这部分是Linux正常运行的需要, Java服务的线程数量是160个,JVM默认的线程栈大小是1m,因此使用160m内存, Java NIO...前三项加起来已经560m,因此可以断定Linux物理内存不够使用。...因此,我们得出一个结论:部署Java服务的Linux系统,在内存分配上,需要避免SWAP的使用;具体如何分配需要综合考虑不同场景下JVM对Java永久代 、Java堆(新生代和老年代)、线程栈、Java...内存泄漏问题 另一个案例是,8g内存的服务器,Linux使用800m,监控进程使用600m,堆大小设置4g;系统可用内存有2.5g左右,但是也发生了大量的SWAP占用。

    3K21

    JVMLinux内存的关系

    一.简介 在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用大约800m。...由于SWAP和GC同时发生会致使JVM严重卡顿,所以我们要追问:内存究竟去哪儿了? 要分析这个问题,理解JVM和操作系统之间的内存关系非常重要。...接下来主要就LinuxJVM之间的内存关系进行一些分析。...二.Linux与进程内存模型 JVM以一个进程(Process)的身份运行在Linux系统上,了解Linux与进程的内存关系,是理解JVMLinux内存的关系的基础。...JVM运行时区域详解,推荐大家看下。 从Linux系统上看,除了引导系统的BIN区,整个内存空间主要被分成两个部分:内核内存(Kernel space)、用户内存(User space)。

    2K10

    Linux设置虚拟内存

    在我们自己的购买的服务器环境中,一般是买的1g的内存,但是当服务器里面的东西装的比较多的时候就会导致内存不够用了,这个时候可以通过增加虚拟内存来夸大内存容量。...Linux设置虚拟内存 交换技术 交换(Swapping)技术它的主要特点是:打破了一个程序一旦进入内存,就一直驻留在内存直到运行结束的限制。...[root@localhost swap]# du -sh /usr/swap/swapfile 4.1G /usr/swap/swapfile [root@localhost swap]# 将目标设置为...swap分区文件 使用命令mkswap /usr/swap/swapfile将swapfile文件设置为swap分区文件 [root@localhost swap]# mkswap /usr/swap/...buffers/cache: 326 654 Swap: 4095 0 4095 [root@localhost swap]# 设置开机自动启用虚拟内存

    12.7K82

    Redis——设置最大内存 | key淘汰机制

    前言 原有的内存淘汰机制没有设置导致redis持久化的时候,内存直接爆掉 步骤 修改配置 | 重启服务 修改redis.conf的配置文件,并重启redis服务 ####################...You can select among five behaviors: #内存不足的情况下,有以下几种移除key的方式供你选择 # # volatile-lru -> Evict using approximated...(server.db[i].expires)中挑选最近最少使用的数据淘汰 #2. volatile-ttl:从已设置过期时间的数据集(server.db[i].expires)中挑选将要过期的数据淘汰...#3. volatile-random:从已设置过期时间的数据集(server.db[i].expires)中任意选择数据淘汰 #4. allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,...#7. volatile-lfu:从已设置过期时间的数据集(server.db[i].expires)中挑选最不经常使用的数据淘汰 #8. allkeys-lfu:当内存不足以容纳新写入数据时,在键空间中

    10710

    JVMLinux内存关系详解

    在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用大约800m。...一、Linux与进程内存模型 JVM以一个进程(Process)的身份运行在Linux系统上,了解Linux与进程的内存关系,是理解JVMLinux内存的关系的基础。...普通进程栈区,在JVM一般仅仅用做线程栈。JVM的堆区和普通进程的差别是最大的,下面具体详细说明: 首先是永久代。永久代本质上是Java程序的代码区和数据区。...2.内存泄漏问题 另一个案例是,8g内存的服务器,Linux使用800m,监控进程使用600m,堆大小设置4g;系统可用内存有2.5g左右,但是也发生了大量的SWAP占用。...四、总结 本文详细分析了LinuxJVM内存关系,比较了一般进程与JVM进程使用内存的异同点,理解这些特性将对Linux系统内存分配、JVM调优、Java程序优化有帮助。

    2.1K50

    LinuxJVM内存关系分析

    引言 在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约600m,Linux自身使用大约800m。...一、Linux与进程内存模型 JVM以一个进程(Process)的身份运行在Linux系统上,了解Linux与进程的内存关系,是理解JVMLinux内存的关系的基础。...JVM的堆区和普通进程的差别是最大的,下面具体详细说明: 首先是永久代。永久代本质上是Java程序的代码区和数据区。...2.内存泄漏问题 另一个案例是,8g内存的服务器,Linux使用800m,监控进程使用600m,堆大小设置4g;系统可用内存有2.5g左右,但是也发生了大量的SWAP占用。...四、总结 本文详细分析了LinuxJVM内存关系,比较了一般进程与JVM进程使用内存的异同点,理解这些特性将对Linux系统内存分配、JVM调优、Java程序优化有帮助。

    4.7K80

    JVMLinux内存关系详解

    在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用大约800m。...一、Linux与进程内存模型 ---- JVM以一个进程(Process)的身份运行在Linux系统上,了解Linux与进程的内存关系,是理解JVMLinux内存的关系的基础。...JVM的堆区和普通进程的差别是最大的,下面具体详细说明: 首先是永久代。永久代本质上是Java程序的代码区和数据区。...2.内存泄漏问题 另一个案例是,8g内存的服务器,Linux使用800m,监控进程使用600m,堆大小设置4g;系统可用内存有2.5g左右,但是也发生了大量的SWAP占用。...四、总结 ---- 本文详细分析了LinuxJVM内存关系,比较了一般进程与JVM进程使用内存的异同点,理解这些特性将对Linux系统内存分配、JVM调优、Java程序优化有帮助。

    4.9K00

    JVM: JVM 内存划分

    了解 JVM 内存的各个区域将有助于我们深入了解它的管理机制,避免出现内存相关的问题和高效的解决问题。...堆 堆是 Java 虚拟机所管理内存最大的一块。是所有线程共享的一块内存区域,在虚拟机启动时创建。这个区域唯一的作用就是存放对象实例,也就是 NEW 出来的对象。...元空间与方法区最大的区别是:元空间不再虚拟机中,而是使用本地内存。默认情况下,元空间的大小仅受本地内存限制。 常量区原本在方法区中,现在方法区被移除了,所以常量池被放倒了堆中。...TLAB:为每一个线程预先在 Eden 分配一块内存JVM 在给线程中的对象分配内存时,首先在 TLAB 分配,如果不够,使用 CAS 进行分配。...设置对象头:初始化零值完成之后,虚拟机要对对象进行必要的设置。比如对象的哈希码,对象的 GC 分代年龄信息,偏向锁,这些信息放在对象头中。

    76221

    JVM线程和内存参数合理性设置

    Tech /导读/ JVM启动参数中很多与线程、内存相关。在生产实践中,对这些参数随意设置或者采用默认值可能会有一些风险,特别是在JDK低版本的容器下,可能出现容器CPU过高,GC频繁等。...该值设置过小,GC暂停时间变长影响RT,设置过大则影响吞吐量,从而导致CPU过高。 1. 参数设置 GC并发线程数可以通过JVM启动参数: -XX:ParallelGCThreads=[n]来指定。...容器内存大于2G:默认值为容器内存的1/4, 最大可到达32G。...另外,容器中如果有其他进程还在消费内存JVM内存抖动时可能申请内存失败,导致OOM。因此建议服务模式下,将Xms设置Xmx一样的值。...Metaspace取代永久代,位置由JVM内存变成系统原生内存,也取消默认的最大空间限制。

    1.4K51

    Linux Linux最大文件描述符设置

    系统可打开最大文件描述符设置 查看系统可打开最大文件描述符 # cat /proc/sys/fs/file-max 65535 说明: 所有进程打开的文件描述符数不能超过/proc/sys/fs/file-max...进程可打开最大文件描述设置 查看进程可打开最大文件描述符: soft nofile # ulimit -n 65535 配置进程可打开最大文件描述符 a)永久配置 添加带背景色内容 # vim /...如上,表示进程可打开最大文件描述符数的soft limit为65535,hard limit为65535 3、需要注销重新登录配置才会生效 4、/proc/sys/fs/nr_open是单个进程可分配的最大文件数...,所以在我们使用ulimit或limits.conf来配置hard limit时,如果设置的值超过/proc/sys/fs/nr_open默认值1048576需要先增大nr_open值(# vim /etc.../sysctl.conf,文件末尾添加nr_open,形如fs.nr_open=100000000000) 5、对于非root用户只能设置比原来小的hard limit。

    6.3K42

    JVM 札记】JVM 内存划分

    是否有必要学习 JVM 为什么要了解 JVM内存划分或者内存管理呢?其实本身我觉得是没有太多必要的,因为作为一个普通的程序员而言,去了解它是一种破坏黑盒子的行为。...但是,JVM 提供了自动的内存管理机制,它的内存自动管理机制虽然有很多实现方式,但是在各种不同的场景下它不一定是最优的。...这就好比,作为一个普通的司机,会开汽车就可以了,不用关心发动机的原理与实现;而对于一个赛车手可能就需要对发动机在不同环境下的性能等有深入的了解,从而让赛车发挥最大的优势。...为什么进行内存划分 既然需要了解 JVM内存划分,那么就先说说 JVM 为什么要进行内存划分呢?这个其实比较好理解,因为这种划分区域的方式可以说随处可见。...当然了,虽然这是事实,但是也并不说明内存按属性划分的管理方式有问题) JVM 内存大致划分 JVM 作为虚拟机的存在可以被认为是一台独立的机器,.class 作为 JVM 上的可执行文件,因此,JVM

    14610
    领券