在Java中,当局部变量(比如方法参数)的作用域结束时,这个局部变量的引用确实不再存在,但这并不意味着它引用的对象会被销毁。对象的销毁是由Java的垃圾回收器(Garbage Collector, GC)来管理的。在Java中,局部变量(如方法参数)通常存储在栈内存(Stack Memory)中,而对象实例(如ServletConfig对象)则存储在堆内存(Heap Memory)中。

init(ServletConfig config)方法中,config是一个局部变量,它持有一个对ServletConfig对象的引用。当init方法执行完毕后,config这个引用确实不再存在,但是ServletConfig对象本身并不会被销毁,除非它不再被任何引用所指向,并且垃圾回收器决定回收它所占用的内存。

当我们在init方法中将config赋值给类的成员变量this.servletConfig时,ServletConfig对象的引用被复制到了成员变量中。即使init方法结束,this.servletConfig仍然持有对同一个ServletConfig对象的引用,因此该对象不会被垃圾回收器回收。

这里是一个简化的内存管理示例:

public class MyServlet extends HttpServlet {
private ServletConfig servletConfig; public void init(ServletConfig config) {
// 此时,config是一个局部变量,它持有一个对ServletConfig对象的引用
// 这个ServletConfig对象是由Servlet容器创建的
this.servletConfig = config; // 将config的引用复制给成员变量servletConfig
// init方法结束,config这个引用不再存在,但是servletConfig仍然持有对ServletConfig对象的引用
} public void doSomething() {
// 在这里,我们仍然可以通过servletConfig成员变量访问ServletConfig对象
// 即使init方法已经执行完毕,并且config引用已经不存在
}
}

在这个例子中,即使init方法执行完毕,ServletConfig对象也不会被销毁,因为servletConfig成员变量仍然持有对它的引用。只有当servletConfig也被设为null,并且没有其他引用指向ServletConfig对象时,该对象才会变得可回收,最终由Java的垃圾回收器处理。

因此,将config参数赋值给成员变量servletConfig确实是有意义的,这样我们就可以在Servlet的整个生命周期中通过servletConfig来访问ServletConfig对象,而不用担心它会被垃圾回收器回收。

Java对象引用和内存管理的细节的更多相关文章

  1. JVM内存管理------JAVA语言的内存管理概述

    引言 内存管理一直是JAVA语言自豪与骄傲的资本,它让JAVA程序员基本上可以彻底忽略与内存管理相关的细节,只专注于业务逻辑.不过世界上不存在十全十美的好事,在带来了便利的同时,也因此引入了很多令人抓 ...

  2. JVM内存管理之JAVA语言的内存管理概述

    引言 内存管理一直是JAVA语言自豪与骄傲的资本,它让JAVA程序员基本上可以彻底忽略与内存管理相关的细节,只专注于业务逻辑.不过世界上不存在十全十美的好事,在带来了便利的同时,也因此引入了很多令人抓 ...

  3. 高性能JAVA开发之内存管理

    这几天在找一个程序的bug,主要是java虚拟机内存溢出的问题,调研了一些java内存管理的资料,现整理如下: 一.JVM中的对象生命周期 对象的生命周期一般分为7个阶段:创建阶段,应用阶段,不可视阶 ...

  4. Java数组的内存管理

    Java数组的内存管理 Java语言是典型的静态语言,因此Java的数组是静态的,即当数组被初始化之后,该数组的长度是不可变的.Java程序中的数组必须经初始化才能使用.所谓初始化,就是当数组对象的元 ...

  5. Java堆外内存管理

    Java堆外内存管理   1.JVM可以使用的内存分外2种:堆内存和堆外内存: 堆内存完全由JVM负责分配和释放,如果程序没有缺陷代码导致内存泄露,那么就不会遇到java.lang.OutOfMemo ...

  6. 利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题

    利用 Memory Dump Diagnostic for Java (MDD4J) 分析内存管理问题(2) 启动和理解 MDD4J[size=1.0625]为了充分理解如何使用 MDD4J,您需要了 ...

  7. 深入java虚拟机学习 -- 内存管理机制

    前面说过了类的加载机制,里面讲到了类的初始化中时用到了一部分内存管理的知识,这里让我们来看下Java虚拟机是如何管理内存的. 先让我们来看张图 有些文章中对线程隔离区还称之为线程独占区,其实是一个意思 ...

  8. Java进阶之内存管理与垃圾回收

    Java是在JVM所虚拟出的内存环境中运行的.内存分为栈(stack)和堆(heap)两部分.我们将分别考察这两个区域. 栈 在Java中,JVM中的栈记录了线程的方法调用.每个线程拥有一个栈.在某个 ...

  9. [深入理解Java虚拟机]<自动内存管理>

    Overview 走近Java:介绍Java发展史 第二部分:自动内存管理机制 程序员把内存控制的权利交给了Java虚拟机,从而可以在编码时享受自动内存管理.但另一方面一旦出现内存泄漏和溢出等问题,就 ...

  10. 深入理解JAVA虚拟机 自动内存管理机制

    运行时数据区域 其中右侧三个一起的部分是每个线程一份,左侧两个是所有线程共享的. 程序计数器(Program Counter Register) 英文名称叫Program Counter Regist ...

随机推荐

  1. 【MySQL】InnoDB vs MyISAM

      MySQL默认数据库引擎 事务支持 索引类型 索引数据结构 对锁的支持 使用场景 关于count(*) 外键支持 InnoDB 5.1版本后,是 默认为Read committed 聚集索引,叶子 ...

  2. python快速入门【二】----常见的数据结构

    python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...

  3. 知识图谱项目实战(一):瑞金医院MMC人工智能辅助构建知识图谱--初赛实体识别【1】

    1.技术背景&赛题介绍: A Labeled Chinese Dataset for Diabetes中文糖尿病标注数据集详情请见. 数据集链接:瑞金医院MMC人工智能辅助构建知识数据源:知识 ...

  4. 《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(1)-初识Wireshark

    1.简介 前边已经介绍过两款抓包工具,应该是够用了,也能够处理在日常工作中遇到的问题了,但是还是有人留言让宏哥要讲解讲解Wireshark这一款抓包工具,说实话宏哥之前也没有用过这款工具,只能边研究边 ...

  5. 【Matlab】蒙特卡罗法模拟圆周率+对应解析的GIF生成【超详细的注释和解释】

    文章目录 前言 模拟思路 GIF模拟动图的生成 GIF动图生成的基本思路 单张静态图的生成 GIF的生成 尾声 前言 因为博主最近要准备数学建模大赛了,在学习matlab和python之余,博主也会继 ...

  6. 从TF-IDF 到BM25, BM25+,一文彻底理解文本相关度

    相关性描述的是⼀个⽂档和查询语句匹配的程度.我们从搜索引擎召回时,肯定希望召回相关性高的数据,那么如何来量化相关度呢. 首先,我们定义,一个文档doc,由多个词语 term 组成. 最早,通过最简单的 ...

  7. 教你用JavaScript实现表情评级

    案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用JavaScript编程实战案例,做一个表情评价程序.用户打星进行评价,表情会根据具体星星数量发生变化. 案例演示 点击星星 ...

  8. 洛谷P1249最大乘积,数论找规律

    这道题是数论加高精度,高精度倒好说,就是高精度乘法实现,模拟列竖式乘法,但是找出要乘的这几个数实属不容易,没学过数论,只能从题解中学怎么找规律这里引用一下洛谷题解区赞数最高的题解 不知道大家看其他的题 ...

  9. CentOS7.5上Oracle19c离线rpm安装

    CentOS7.5上Oracle19c离线rpm安装 一.基础环境配置及依赖安装(1)关闭系统防火墙(如外网环境不能关闭防火墙自行开放相关需要使用的端口即可) systemctl stop firew ...

  10. Redhat6更改yum源

    最近虚拟机中安装了redhat6.3企业版,自带的yum用不起来,软件都找不到. 网上搜了一下说是没付钱...,需要改下yum源.操作步骤如下: 1.切换到yum源存放目录 [root@rhel6 ~ ...