Java - JVM及其调优

原文链接https://blog.csdn.net/qq_27098537/article/details/124436788

 

一、什么是JVM

用于运行java代码,包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收、堆和一个存储方法域。

 

 

二、JVM的位置

 

三、JVM的体系结构

堆(Heap)和非堆(Non-heap)

  • 堆是运行时数据区域,所有类实例和数组的内存均从此处分配。堆是Java虚拟机启动时创建的。
  • 在jvm中堆之外的内存被称为非堆内存(Non-heap memory)
  • 堆是java代码可及的内存,留给开发人员使用的。非堆是留给jvm自己用的。

 

 

 

四、JVM调优

-Xms 128M设定最小堆的大小,当虚拟机启动后,会分配128M的堆内存。

-Xmx 512m设定程序运行期间最大堆的内存大小,如果程序运行需要更多的内存,超过该值,会发生OOM。

-XX:PermSize=64MJVM初始分配的非堆内存。

-XX:MaxPermSize=128MJVM最大允许分配的非堆内存,按需分配。

-Xss设定每个线程的堆栈大小。视程序而定,考虑一个线程需要占用多少内存,会有多少线程同时运行等。

以上参数设置单位默认为Byte,可在数字后加[k/K]表示千字节(KB),[m/M]表示兆字节(MB)

 

  最小堆占满后,会进行GC,如果GC后还不能得到足够的内存(GC未必会收集到所有当前可用内存),分配新对象就会扩展堆,如果-Xmx设置的太小,扩展堆就会失败,就会OOM。

  

 

 

 

 

— 要养成终生学习的习惯 —

posted @   HOUHUILIN  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示