`
renrenqian123
  • 浏览: 10407 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

初识对象的创建、使用和生命周期

阅读更多
以前一直认为这块知识不重要,至少是目前不重要。不过既然要往深处学习,这块应该是必须的吧。

这次只是把书上看到的一些自己认为重要的地方做个摘录,以后深入学习以后再做补充。



对象的数据位于何处?

1、诸如像C++之类的一些语言认为效率控制是最重要的议题,所以给程序员提供了选择的余地。

为了执行的速度即效率,可以在程序编写的时候就确定对象的存储空间和生命周期。这可以通过将对象置于堆栈或静态存储区域内来实现。(对计算机硬件方面,实在是不感兴趣,所以这句话读了暂时也没什么深刻的体会)这种方式在灵活性上欠佳。



2、第二种方式成为堆(heap)的内存池中动态的创建对象。java运用的便是这一类,光看“动态”两个字也觉得这个比较高级。

在这种方式中,直到运行到相关代码被执行的那一刻才知道需要创建多少对象?生命周期如何?具体类型是什么?毋庸置疑,好处是灵活性大大提高,而以此作为代价的是效率的降低。



怎样控制对象的生命周期?

1、在堆栈(C++)那类上创建的对象,编译器可以确定对象的存活时间,并可以自动销毁。C++必须通过编程的方式来确定何时销毁对象,这可能会因为不正确的处理而导致内存泄露。



2、在堆(java)上创建的对象,编译器对它的生命周期一无所知。java提供了被称为“垃圾回收器”的机制,可以发现对象何时不再被使用,并继而销毁它。就是因为有了这个“器”,所以我从来没有考虑过回收这方面的问题,从来不搞“计划生育”。然而java使用这个“器”的重要意义其实在于避免了暗藏的“内存泄露”问题。

分享到:
评论

相关推荐

    C# 与ASP.NET初识教程清淅版 PDF

    3. ASP.NET基础:Web Forms和MVC的原理、生命周期、页面和控件事件处理。 4. ASP.NET开发环境:Visual Studio IDE的使用、调试技巧和部署流程。 5. 数据访问:ADO.NET、Entity Framework以及数据库操作。 6. 实战...

    构造函数与析构函数.docx

    对象的生命周期是指对象从创建到销毁的整个过程,而构造函数和析构函数正是对象生命周期中的两个重要阶段。 对象的生命周期 在了解构造函数和析构函数之前,我们需要了解对象的生命周期。对象的生命周期是指对象从...

    Android初识之Activity组件

    这是每个Activity生命周期中的第一个回调方法,当Activity被创建时会调用。在这个方法中,开发者通常会完成以下操作: 1. 设置布局:通过`setContentView(R.layout.activity_main)`加载XML布局文件,使用户界面得以...

    初识Spring

    1. 依赖注入:通过DI,Spring框架可以自动管理对象的生命周期和依赖关系,无需手动进行对象的实例化和配置。 2. 面向切面编程:AOP使得代码的模块化更为彻底,可以将通用的服务如事务管理、日志记录等抽取为“切面...

    Maven3之初识

    通过阅读这本书,你可以学习到如何创建和管理POM,理解Maven的生命周期和插件机制,以及如何配置和优化Maven来适应你的项目需求。 总结来说,Maven3是一个强大的项目管理和构建工具,通过规范化的POM、智能的依赖...

    Spring基础篇之初识DI和AOP

    每个类需要自己创建其他类的对象,并管理对象的生命周期,这样会导致代码的高度耦合和复杂度。使用DI后,类可以只关心自己的功能实现,而不需要管理其他类对象的生命周期。 2. 依赖注入的方式 依赖注入有多种方式...

    Maven初识,核心概念,构建多模块系统

    与创建工程不同,构建项目是一个涉及编译、测试、打包、部署等多个步骤的过程,而Maven能够管理整个生命周期中所需的所有Jar文件依赖。 在安装Maven时,需要下载并解压到指定目录,然后设置环境变量以便系统能够...

    初识Spring框架-资料.rar

    Spring框架的核心是IoC容器,它负责管理对象的生命周期和对象之间的依赖关系。 2. **依赖注入(DI)**: DI是Spring的核心特性之一,允许开发者声明他们依赖的组件,而无需手动创建这些依赖。Spring容器负责查找...

    EJB对象的简要提点

    其中,EJB容器作为核心,负责EJB的生命周期管理,包括创建、销毁、激活、去活以及与数据库的交互等关键任务。 - 相比于**EJB 1.1**,EJB 2.0在架构上更加成熟,引入了更高级的组件类型,如Session Beans和Entity ...

    每天学点C++(C++实例教程:教程+源码)SLC初识.zip

    析构函数则在对象生命周期结束时自动调用,用于清理资源。 10. **模板**:C++的模板允许创建泛型函数和泛型类,增强了代码的复用性。 11. **异常处理**:通过try、catch和throw关键字,C++提供了异常处理机制,...

    初识asp.net 仅供初学者参考

    在Web Forms中,页面生命周期包括初始化、加载、回发和卸载等阶段,开发者可以通过这些阶段来控制页面行为。 5. **MVC模式** Model-View-Controller模式是一种设计模式,用于分离应用程序的数据逻辑、用户界面和...

    Java开发学习(一)----初识Spring及其核心概念.doc

    1. **核心层**:核心容器(Core Container)是Spring的基础,它包含了BeanFactory和ApplicationContext等组件,负责管理应用对象的生命周期和配置。 2. **AOP层**:面向切面编程(AOP)是Spring提供的一种强大的功能,...

    01vue初识_vue_principle9nn_

    - **生命周期钩子函数**:如`beforeCreate`、`created`、`beforeMount`、`mounted`等,用于在组件不同阶段执行逻辑。 2. **安装Vue**: - 可以通过CDN引入Vue的JS文件,直接在HTML中使用。 - 使用npm或yarn进行...

    (完整word版)操作系统实验报告.实验一 WINDOWS进程初识.pdf

    实验二进一步深化了这些概念,通过实际创建进程、查看正在运行的进程、终止进程,以及处理父子进程同步的问题,让学生更深入地理解Windows中进程的生命周期。这通常会涉及到Windows API函数,如`CreateProcess`用于...

    04737C++程序设计精华.pdf

    1.1 **初识C++的函数和对象**:讲解了如何定义和调用函数,以及如何创建和使用对象。 1.2 **C++语言面向过程编程的特点**:介绍了C++如何通过过程化编程实现逻辑控制和数据处理。 1.3 **程序的编辑、编译和运行的...

    初级入门jsp源代码

    在实际项目中,理解Request和Session的生命周期、并发问题以及性能优化策略也是至关重要的。 总的来说,这个初级的JSP源代码示例是学习Web开发的宝贵资源,通过它,我们可以直观地了解Request和Session对象的工作...

    C++程序设计项目练习.doc

    学习如何使用构造函数初始化对象,并理解析构函数在对象生命周期结束时的作用。构造函数用于在创建对象时设置初始状态,而析构函数则用于清理资源,确保程序不会因内存泄漏而出现问题。 4. **继承与派生**(项目4...

    Spring框架、SpringMVC框架、Maven高级(缺)、SpringBoot框架、MyBatis-Plus框架

    1.8-1.9 介绍了 Bean 的生命周期,包括初始化、使用和销毁等阶段,以及如何通过生命周期回调方法进行自定义处理。1.10-1.11 展示了如何通过 Setter 注入和构造器注入来管理 Bean 间的依赖。1.12 集合注入说明了如何...

    beginning java server pages example code

    《初识Java Server Pages示例代码》是一本深入解析JSP和Servlet生命周期的权威书籍,其随书源码涵盖了丰富的实践示例,旨在帮助读者从基础到深入理解这两种技术。JSP(Java Server Pages)是一种动态网页技术,而...

    10天学会ASP.NET

    在学习之初,你需要理解ASP.NET的基本概念,包括它的工作原理、架构和主要组成部分,如页生命周期、服务器控件和状态管理。ASP.NET页面由HTML、服务器控件和代码组成,通过编译模型运行,提高了性能和安全性。 第二...

Global site tag (gtag.js) - Google Analytics