JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m


 

 

JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m

 

摘自 :https://blog.csdn.net/u012882327/article/details/69525166

版权声明:博主也花了很多的心思归纳整理才分享给大家,转载请注明出处。 https://blog.csdn.net/u012882327/article/details/69525166

在linux环境下配置项目运行环境时,部署的人员都会分配一下内存,以保证程序正常的运行。其实在开发的时候(window系统),就已经涉及到内存分配了,只是这些参数有默认值,因此一直没有去重视它。 
以Myeclipse为例,在Preferences->Java->Installed JREs下面,就有设置jvm内存分配。 
这里写图片描述

这里我们就可以配置内存,一般我们见到的都是

-Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m  linux中一般为: -vmargs -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • 1
  • 2
  • 3
  • 4

但是这一串究竟是什么意思,这里就给大家讲解一下。 
按照官方的说法:Java 虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是在 Java 虚拟机启动时创建的,在JVM中堆之外的内存称为非堆内存(Non-heap memory)。

简单的说就是:堆是java代码可及的内存,开发人员写的东西都是堆分配的内存(底层实现除外)。而非堆内存则是JVM自己用的,比如JVM内部处理或优化,垃圾处理,常数池等。

堆的内存分配用-Xms和-Xmx

-Xms分配堆最小内存,默认为物理内存的1/64;-Xmx分配最大内存,默认为物理内存的1/4。 
  • 1
  • 2

非堆内存分配用-XX:PermSize和-XX:MaxPermSize

-XX:PermSize分配非堆最小内存,默认为物理内存的1/64;-XX:MaxPermSize分配最大内存,默认为物理内存的1/4。 
  • 1
  • 2

因此,合理的内存分配是程序正常稳定的运行的基础。不然内存溢出可就麻烦了。

 

posted @   LiuYanYGZ  阅读(2075)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
历史上的今天:
2017-09-07 VNC协议分析
2017-09-07 ubuntu安装vnc,远程链接时出现灰屏,配置文档不对吗
点击右上角即可分享
微信分享提示