对于Java开发人员来说,了解Java内存模型是必不可少的知识。
JVM内存模型
在生产环境上一般会配置JVM参数以充分利用硬件资源,不管是在云主机或容器里面,也就是在启动应用时添加下面的某些配置:
- -XmsSetting —初始堆大小
- -XmxSetting —最大堆大小
- -XX:NewSizeSetting —新一代堆大小
- -XX:MaxNewSizeSetting —最大新一代堆大小
- -XX:MaxPermGenSetting —永久生成的最大大小
- -XX:SurvivorRatioSetting —新的堆大小比率(例如,如果Young Gen大小为10m并且内存开关为–XX:SurvivorRatio=2,则将为Eden空间保留5m,为两个Survivor空间分别保留2.5m,默认值= 8)
- -XX:NewRatio —提供新旧大小的比率(默认值= 2)
就像任何其他软件一样,JVM占用主机OS内存上的可用空间。
在JVM内部存在单独的内存空间(堆、非堆和缓存),用来存储运行时数据和编译后的代码。