千家信息网

jvm内存模型及分配参数

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,jvm内存模型程序计数器:是一块很小的内存空间。当线程数量超过cpu数量时,线程之间根据时间片轮询抢夺cpu资源。每一个线程都必须用一个独立的程序计数器,用于记录下一条要运行的指令。java虚拟机栈(
千家信息网最后更新 2026年10月31日jvm内存模型及分配参数

jvm内存模型

  1. 程序计数器:是一块很小的内存空间。当线程数量超过cpu数量时,线程之间根据时间片轮询抢夺cpu资源。每一个线程都必须用一个独立的程序计数器,用于记录下一条要运行的指令。

  2. java虚拟机栈(线程栈 ):也是线程私有内存空间,他和java线程在同一时间创建,他保存方法的局部变量、部分结果,并参与方法的调用和返回。如果线程在计算过程中,请求的栈深度大于最大可用的栈深度,则抛出StackOverflowError;如果java栈可以动态扩展,而在扩展的过程中,操作系统没有足够的内存空间来支持栈的扩展,则抛出OutOfMemoryError;--参数设置参见《设置线程栈 》

  3. 本地方法栈:用于管理本地方法的调用,本地方法是使用C实现的。

  4. java堆:堆空间分为新生代和老年代。新生代用于存放产生的新对象,老年代用于存放年长的对象(存在 时间较长,经过垃圾回收次数较多的对象)。新生代又可以细分为eden,s0和s1,eden大部分对象刚建立时,通常放在这里。s0和s1为survivor空间,也就是说存放其中的对象至少经历了一次垃圾回收,并得以幸存。如果幸存区的对象到了指定的年龄仍未被回收,则有机会进入老年代。

  5. 方法区:与堆空间类似,也是被jvm的所有线程共享的,主要保存的是类的类型信息、常量池、域信息、方法信息等元数据。

设置最大、最小堆内存

  1. 用-Xmx指定最大堆内存,最大堆内存指的是新生代和老年代的大小之和的最大值,它是java应用程序的堆上线。

  2. 用-Xms指定最小堆内存,也就是jvm启动时,所占据的操作系统内存大小。

  3. 当-Xms指定的内存大小确实无法满足应用程序是,jvm才会向操作系统申请更多的内存,直至达到-Xmx指定的内存大小为止。 如果-Xms的数值较小,那么jvm为了保证系统尽可能的在指定内存范围内运行,就会频繁的进行gc操作,以释放失效的内存空间,从而,会增加Minor GC和Full GC的次数,对系统性能产生一定影响。所以,把-Xms值设置为-Xmx时,可以在系统运行初期减少gc的次数和耗时。

设置线程栈

  1. 线程栈是线程的一块私有空间,可以用-Xss设置线程栈的大小,栈的大小直接决定了函数调用的可达深度。

  2. 在线程中进行局部变量分配,函数调用时,都需要在栈中开辟空间。

  3. 如果栈的空间分配太小,那么线程在运行时,可能没有足够的空间分配局部变量或者达不到足够的函数调用深度,导致程序异常退出;如果栈空间过大,那么开设线程所需的内存成本就会上升,系统所能支持的线程总数就会下降。

  4. java堆和线程栈都是像操作系统申请内存空间,如果堆空间过大,就会导致操作系统可用于线程栈的内存减小,当系统由于内存不够而无法创建新的线程时,会抛出OOM异常(注意这个OOM不是堆内存不足)。所以,如果系统确实需要大量线程并发执行,那么设置一个较小的堆和较小的栈,有助于提高系统所能承受的最大线程数。

设置新生代

  1. 用-Xmn指定新生代的大小,新生代的大小一般设置为整个堆空间的1/4到1/3。设置一个较大或较小的新生代对系统性能已经gc行为有很大影响。

  2. 使用-XX:NewSize设置新生代的初始大小,-XX:MaxNewSize设置新生代的最大值。通常情况下只设置-Xmn即可满足需要。

设置持久代

  1. 持久代(方法区)不属于堆得一部分,使用-XX:MaxPermSize设置持久代最大值,使用-XX:PermSize设置持久代最小值。

  2. 持久代的大小直接决定了系统可以支持多少个类定义和多少常量。

  3. 一般MaxPermSize设置为64M或128M。

取得堆快照(堆dump)

  使用-XX:+HeapDumpOnOutOfMemoryError参数在程序发生OOM时,导出应用程序的当前堆快照。

  通过参数-XX:HeapDumpPath可以指定堆快照的保存位置。


线程 内存 空间 系统 大小 新生 新生代 方法 程序 最大 对象 操作系统 年代 深度 运行 参数 分配 最小 信息 函数 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司 广州百单互联网科技有限公司 互联网金融与金融科技 上游互联网科技 广州紫鲸互联网科技 居家互联网科技有限公司 互联网科技生活的内容 汉立互联网科技有限公司联系电话 现代科技和互联网有关系吗 重庆互联网医院沙龙医盟信息科技 武汉健翔互联网络科技有限公司 花神(南京)互联网科技有限公司 迪庆互联网科技招生 中和天地互联网科技有限公司 美国互联网科技实力 抖集互联网科技技术咨询 昆明中奇联合互联网科技 安徽零酒互联网科技有限公司 杭州融税互联网科技有限公司 互联网科技创业有什么好项目 有格互联网科技 科技互联网公司装修 新华互联网科技学院 深圳互联网科技公司 成都仁贤领冠互联网科技有限公司 互联网 科技馆 南山科技园互联网公司有哪些 群盈汇互联网科技有限公司 互联网第三次科技革命特征 西安左小互联网科技有限公司
0