千家信息网

如何理解Java垃圾回收

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍"如何理解Java垃圾回收",在日常操作中,相信很多人在如何理解Java垃圾回收问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何理解Java垃圾回收"
千家信息网最后更新 2026年11月02日如何理解Java垃圾回收

这篇文章主要介绍"如何理解Java垃圾回收",在日常操作中,相信很多人在如何理解Java垃圾回收问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"如何理解Java垃圾回收"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

Java内存区域

Q:Java虚拟机规范将JVM虚拟机所管理的内存分为几部分?如果是多选题,估计会给一些不在里面的,例如直接内存。

A:程序计数器、java虚拟机栈、本地方法栈、方法区、堆。

java对象在内存上的分配:

§ GC策略

Q:java使用根搜索算法来确定对象是否存货,哪些对象可以作为GC Roots?

A:

  • 虚拟机栈(栈帧中的本地变量表)中的引用的对象

  • 方法区中的类静态属性引用的对象

  • 方法区中的常量引用的对象

  • 本地方法栈中JNI(Native方法)的引用对象

Q:标记清除、标记整理、复制算法哪个块?

A:复制算法较快。

3个算法含义如下:

Q:SerialOld用的是什么算法?

A:标记整理算法,属于处理老年代算法。

各收集器的变化图如下,主要关注一下变化和区别,

Q:fullGC 会发生在老年代区还是新生代区?

A: 会发生在老年代区。相反,minorGC一般发送在新生代区。

新生代、老生代以及minorGC、fullGC的发生流程如下:

Q:方法区里的class对象(即类对象)什么时候会被回收?

A:所有实例都被回收、对应classLoader也被回收、class对象不会再被引用或者反射(这个咋确定?当初书里看到的,没懂)

§ finalized与GC

Q:什么时候会调用对象的finalized方法

A:JVM启动垃圾回收,且该对象要被回收时。

finalized应该更多是规范吧,很多规范里都要求我们不要自己实现finalized了,毕竟不确定性太大。

§ Java虚拟机GC参数配置

突然想起来当初看java虚拟机时,把那些参数给跳过了,感觉记不住。

但现在发现还是得学的,赶紧恶补一下。

Q:

-client和-server的对比

()启动较快

()性能和内存管理效率高(注意启动快和性能好不是一回事)

桌面应用一般使用(), 服务器一般使用()

A:

(-clien)启动较快

(-server)性能和内存管理效率高

桌面应用一般使用(-clien), 服务器一般使用(-server)

有4个跟内存相关的参数

-Xmn -Xms -Xmx -Xss

回答下面的问题:

Q:

用于配置java初始堆内存的是()

A:

-Xms。

-X、memory、size ,内存大小

Q:

用于配置java堆的最大值的是()

A:

-Xmx。

-X、memory、max

最大内存

Q:如果不设置,-Xms和-Xmx的大小分别默认是多少?

A:

不设置的话,二者相等,默认是 物理内存/64(小于1G)

Q:用于配置新生代内存大小的最大值是:()

你问我什么是新生代内存?

就是下面这个,1个E区加2个S区的这个内存大小

A:

-Xmn。

-X、memory、new

相类似的还有-XX:NewSize 和 -XX:MaxNewSize。

Q:如何根据上面的参数计算老年代内存大小?

A:

Xmx的值(堆最大值)- Xmn的值(新生代内存)

Q:用于配置线程栈内存的是()?替代的还有哪个参数?

A:

-Xss。另一个是-XX:ThreadStackSize

-Xss指 -X stack size

有下面3个和gc相关的参数

-Xnoclassgc -Xincgc -Xloggc:file

回答以下问题:

Q:

可用于关闭针对类对象的gc功能的是()

可用于减少gc的程序停顿时间的是()

用于输出gc相关日志的是()

A:

可用于关闭针对类对象的gc功能的是(-Xnoclassgc)

可用于减少gc的程序停顿时间的是(-Xincgc)

用于输出gc相关日志的是(-Xloggc:file)

Q:-verbose 一般是用于什么的?

A:

查询gc问题。

  • -verbose:class 输出jvm载入类的相关信息,当jvm报告说找不到类或者类冲突时可此进行诊断。

  • -verbose:gc 输出每次GC的相关情况,后面会有更详细的介绍。

  • -verbose:jni 输出native方法调用的相关情况,一般用于诊断jni调用错误信息。

Q: -XX:PermSize和-XX:MaxPermSize设置的是什么内存?

A:

方法区的内存。就是最开始那个图里的这个

通过配置-XX:PermSize以及-XX:MaxPermSize来控制这块内存的大小,jvm在启动的时候会根据-XX:PermSize初始化分配一块连续的内存块,这样的话,如果-XX:PermSize设置过大,可能会很浪费。而Max如果设置小了,可能会omm。

Q:-XX:MetaspaceSize和-XX:MaxMetaspaceSize又是什么内存?

A:

元数据区内存。java8引入的,用于替代上面的perm区。

无论-XX:MetaspaceSize和-XX:MaxMetaspaceSize两个参数如何设置,随着类加载越来越多不断扩容调整,直到MetaspaceSize(如果没有配置就是默认20.8m)触发FGC,上限是-XX:MaxMetaspaceSize,默认是几乎无穷大

到此,关于"如何理解Java垃圾回收"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

内存 对象 方法 参数 算法 配置 大小 新生 新生代 垃圾 输出 最大 年代 问题 学习 就是 性能 时候 更多 最大值 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网是第几次科技革命的成果 国智互联网科技 科技赋能下的互联网金融 广州互联网科技公司 猪兼强互联网科技 互联网科技公司电话 广西互联网科技公司 上海万想互联网科技 互联网科技有限公司 翻译 团飞科技与伯堂互联网服务平台 互联网5g黑科技有哪些 互联网科技人工智能实验室 互联网科技和法律行业 世界互联网领先科技成果获奖 杭州披云加互联网科技有限公司 产业互联网科技服务公司 互联网营销推广黑科技 卡尔迅互联网科技有限公司 互联网公司属于科技吗 互联网高科技绘画 长亮科技互联网金融 上海亿帐通互联网科技 深圳市运趣互联网科技有限公司 隆华科技工业互联网 互联网科技有哪些公司 晓花互联网科技有限公司网址 哈尔滨屹滨互联网科技有限公司 上海钢联属于互联网科技股吗 云南互联网科技学费 科技互联网专业工作会议发言稿
0