专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 JVM参数设置的方法

JVM参数设置的方法

更新时间:2022-02-14 10:20:55 来源:赢咖4 浏览640次

基本参数

通过一张图来了解如何通过JVM参数来控制各区域的内存大小

控制参数

-Xms设置堆的最小空间大小。

-Xmx设置堆的最大空间大小。

-XX:NewSize设置新生代最小空间大小。

-XX:MaxNewSize设置新生代最大空间大小。

-XX:PermSize设置永久代最小空间大小。

-XX:MaxPermSize设置永久代最大空间大小。

-Xss设置每个线程的堆栈大小。

没有直接设置老年代的参数,但是可以设置堆空间大小和新生代空间大小两个参数来间接控制。

老年代空间大小=堆空间大小-年轻代大空间大小

VM内存区域总体分两类,heap区 和 非heap 区 。

heap区: 堆区分为Young Gen(新生代),Tenured Gen(老年代-养老区)。其中新生代又分为Eden Space(伊甸园)、Survivor Space(幸存者区)。

非heap区: Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。

为什么要区分新生代和老生代?

堆中区分的新生代和老年代是为了垃圾回收,新生代中的对象存活期一般不长,

而老年代中的对象存活期较长,所以当垃圾回收器回收内存时,新生代中垃圾回收效果较好,

会回收大量的内存,而老年代中回收效果较差,内存回收不会太多。

不同代采用的算法区别?

基于以上特性,新生代中一般采用复制算法,因为存活下来的对象是少数,

所需要复制的对象少,而老年代对象存活多,不适合采用复制算法,

一般是标记整理和标记清除算法。

因为复制算法需要留出一块单独的内存空间来以备垃圾回收时复制对象使用,

所以将新生代分为eden区和两个survivor区,每次使用eden和一个survivor区,

另一个survivor作为备用的对象复制内存区。

以上就是关于“JVM参数设置的方法”介绍,大家如果想了解更多相关知识,不妨来关注一下赢咖4的Java虚拟机视频,里面的课程由浅到深,适合没有基础的小伙伴学习,希望对大家能够有所帮助哦。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>