Java之new一个对象简单过程
1 问题
new一个对象简单过程
2 过程
1)类加载过程(第一次使用该类)
先看这个类有没有加载到内存,没有的话下面操作
(1)、加载:类加载器(双亲委派模式)通过全限名读取类的二进制流到jvm内部,存储在运行时内存的方法中,java堆中生成一个代表该类的java.lang.Class对象,作为方法区数据的访问入口
(2)、验证:比如final类不能被继承,final方法不被重写
(3)、准备:为静态变量分配内存,设置初始值等
(4)、解析:将常量池中符号引用转为直接引用
(5)、初始化(先父后子):为静态变量赋值、执行static代码块
上面的(2)(3)(4)阶段合叫为链接阶段。
2)创建对象
(1)、在堆区分配对象所需要的内存:分配内存包括本类和父类,但是不包括静态变量,第一步已经说明了
(2)、对所有实例变量进行默认赋值:将方法区对于的实例变量的定义拷贝一份到堆区,然后进行赋值
(3)、执行初始化代码:先初始化父类然后再初始化子类,初始化之前先执行块代码然后才是构造方法
3 总结
new对象分两个过程,加载并初始化类和创建对象。
Java之new一个对象简单过程相关推荐
- Java:new一个对象的过程中发生了什么?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:沉默哥 cnblogs.com/JackPn/p/93861 ...
- java基础-- new 一个对象的过程
java new 一个对象的流程大体如下 public class Person { //静态变量 public static int staicVariabl=1; //成员变量 public ...
- java new一个对象的过程中发生了什么
java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载.加载并初始化类完成后,再进行对象的创建工作. 我们先假设是第一次使用该类,这样的话n ...
- java中new一个对象要经历哪些过程
我们要了解new一个对象经历哪些过程,就要知道new对象之前会做什么事情. 首先Java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名将对象所属的 ...
- java方法在java虚拟机中的执行过程
概述 在之前"Java运行时内存如何分配?"这篇文章中,曾经提到过Java在执行方法时,借助于Java虚拟机栈来实现方法的调用与执行,但具体是如何执行的呢? 本篇文章就主要来解决这 ...
- Java回收垃圾的基本过程与常用算法
目录 一.基本概述 二.垃圾分类 基本背景 举例说明各种引用类型的作用 强引用(Strong Reference) 软引用(Soft Reference) 弱引用(Weak Reference) 虚引 ...
- PDD面试题:new一个对象的过程中发生了什么?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试资料 作者:沉默哥 来源:https://url.cn/5V55xBu ...
- .net 把一个对象赋值给一个参数_Java:new一个对象的过程中发生了什么?
作者:沉默哥http://cnblogs.com/JackPn/p/9386182.html java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定 ...
- 面试官:new一个对象的过程中发生了什么
点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 作者:沉默哥 来源:http://uee.me/c3PR6 ...
最新文章
- rest-framework 版本控制
- DotNet指定文件显示的尺寸
- [OSDI 12] PoweGraph: 分布式图并行计算框架 学习总结
- linux命令的导入,[导入]Linux基本命令
- AsyncHttpClient 源码分析
- 利用介质创建额外域控制器
- Windows 10开机可以跳过锁屏界面的操作方法
- 10款主流的软件测试工具,你用过吗?
- 计算机组成原理_计算机组成原理amp;认识Python
- CCNA11月20日战报
- Java获取resin端口_线上解决Resin服务响应过慢的几个方法
- 安装了最新版本的java 用友nc打不开_NC无法安装客户端插件,不能进入用友NC系统登陆界面...
- python神器_牛逼啊!一个可以随时随地写Python代码的神器
- 【转】无人机故障数据集ALFA: A Dataset for UAV Fault and Anomaly Detection
- 清橙A1206 小Z的袜子(莫队算法)
- [Swift]语言介绍
- EXCEL之工资表转工资条
- 完美解决eclipse中文注释错位、缩进、被放大BUG
- colorAccent,colorPrimary,colorPrimaryDark做什么的?
- U盘启动盘装Linux系统: 以Kali为例
热门文章
- .NET Core 如何调试 CPU 爆高?
- Windows 11 预览版 Build 22000.120 发布
- [005] .NET 的执行模型
- 大厂出品免费图标资源站
- Blazor带我重玩前端(五)
- ASP.NET Core Blazor 初探之 Blazor Server
- [推荐]大量 Blazor 学习资源(二)
- [ASP.NET Core MVC] 如何实现运行时动态定义Controller类型?
- 扎心了,程序员2017到2019经历了什么?
- .NET Core 3.0深入源码理解HttpClientFactory之实战