爱站网关键字挖掘wordpress 小组

news/2025/9/25 18:55:48/文章来源:
爱站网关键字挖掘,wordpress 小组,怎么不花钱自己开网店,淮安房产网Java中new一个对象时#xff0c;JVM到底做了什么#xff1f; 在Java编程中#xff0c;new关键字是我们创建对象的最常用方式。但你是否想过#xff0c;当你写下new MyClass()时#xff0c;Java虚拟机#xff08;JVM#xff09;到底在背后做了哪些工作#xff1f;今天JVM到底做了什么 在Java编程中new关键字是我们创建对象的最常用方式。但你是否想过当你写下new MyClass()时Java虚拟机JVM到底在背后做了哪些工作今天我们就来深入探讨一下new一个对象时JVM的完整执行流程。 1. 类加载对象的蓝图 当你第一次使用new创建一个对象时JVM会首先检查这个类是否已经被加载。如果没有JVM会通过类加载器ClassLoader加载该类的字节码文件.class文件。类加载的过程包括 加载将类的字节码加载到内存中。验证确保字节码是合法的不会危害JVM的安全。准备为类的静态变量分配内存并设置默认值。解析将符号引用转换为直接引用。初始化执行类的静态初始化块static {}和静态变量的赋值操作。 类加载完成后JVM就可以基于这个“蓝图”创建对象了。 2. 内存分配为对象安家 类加载完成后JVM会为对象在堆内存Heap中分配一块空间。这块空间的大小是由对象的成员变量决定的。例如如果一个类有两个int类型的变量和一个String类型的变量那么JVM会分配足够的内存来存储这些数据。 注意Java的堆内存是所有线程共享的因此内存分配需要考虑线程安全问题。JVM会通过指针碰撞Bump the Pointer或空闲列表Free List等机制来高效地分配内存。 3. 初始化默认值清零操作 在内存分配完成后JVM会将对象的成员变量初始化为默认值。这些默认值包括 数值类型如int、long、double等的默认值为0或0.0。布尔类型boolean的默认值为false。引用类型如String、Object等的默认值为null。 这一步确保了对象在构造函数执行之前所有的成员变量都有一个已知的初始状态。 4. 执行构造代码块对象的“热身” 如果类中定义了构造代码块即在类中直接使用{}包裹的代码JVM会在调用构造函数之前执行这些代码。构造代码块通常用于执行一些通用的初始化逻辑。 例如 public class MyClass {{System.out.println(构造代码块执行);} }无论调用哪个构造函数构造代码块都会被执行。 5. 调用构造函数对象的“出生” 接下来JVM会调用与new语句匹配的构造函数。构造函数的主要作用是对对象进行进一步的初始化。例如 public class MyClass {private int value;public MyClass(int value) {this.value value;System.out.println(构造函数执行);} }在构造函数中你可以为成员变量赋值或者调用其他方法来完成对象的初始化。 6. 返回引用对象的“身份证” 当所有初始化操作完成后new操作会返回对象在堆内存中的引用。这个引用实际上是一个指向堆内存中对象地址的指针。程序通过这个引用来操作对象。 例如 MyClass obj new MyClass(10);这里的obj就是一个引用它指向堆内存中MyClass对象的地址。 总结new操作的完整流程 让我们用一个简单的例子来总结new一个对象时的完整流程 public class MyClass {private int value;{System.out.println(构造代码块执行);}public MyClass(int value) {this.value value;System.out.println(构造函数执行);}public static void main(String[] args) {MyClass obj new MyClass(10);} }输出结果 构造代码块执行 构造函数执行从输出中可以看到JVM首先执行了构造代码块然后调用了构造函数。 思考new操作的性能开销 虽然new操作看起来很简单但它背后涉及了类加载、内存分配、初始化等多个步骤这些操作都会带来一定的性能开销。因此在高性能场景下我们需要尽量避免频繁创建对象或者使用对象池Object Pool等技术来优化性能。 结语 通过本文的讲解相信你对Java中new一个对象时的完整流程有了更深入的理解。无论是类加载、内存分配还是构造代码块和构造函数的执行每一步都是JVM精心设计的。掌握这些底层细节不仅能帮助你写出更高效的代码还能让你在面试中脱颖而出。 如果你觉得这篇文章对你有帮助欢迎点赞、转发并在评论区分享你的看法我们下期再见 关注我获取更多技术干货

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/917390.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑迁移技巧:适用于 Windows 10/11 的免费磁盘克隆优秀的工具

电脑迁移技巧:适用于 Windows 10/11 的免费磁盘克隆优秀的工具pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Co…

详细介绍:Windows安装PostgreSQL入门操作手册

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

主播网站建立商务网站管理的主要内容数据管理

最近在微调 ChatGLM3-6b 时,训练好模型之后,调用inference_hf.py函数验证模型的时候报了如下错误,下面是解决方案。 我在训练时使用的是ptuning_v2.yaml配置文件,训练运行代码如下: CUDA_VISIBLE_DEVICES1 python fi…

东莞市公租房申请网站-建设网微信积分商城

Apache Doris 在查询优化方面通过结合 RBO 和 CBO,实现了对简单和复杂查询的高效优化。RBO 负责处理常量折叠、子查询改写和谓词下推等基础优化操作,而 CBO 则在 Join Reorder 等复杂场景中发挥作用。这种结合策略使得 Apache Doris 能够在面对各种查询场景时,既能保证优化过…

Java学习日记9.18

9.18 数据类型 整数扩展 进制 二进制: ob 十进制: 没有 八进制: 0 十六进制: 0x int i = 10 int i1 = 010 int i2 = 0x10输出结果将会是 10 8 16浮点数拓展 float 定义的小数必须在后边加一个f或F (因为小数默认的…

在PVE中实现宿主机与虚拟机同网段通信的配置方案

在PVE中实现宿主机与虚拟机同网段通信的配置方案本文内容由笔者根据遇到的问题口述,并通过ai整理而成供,遇到同样问题的同学参考。问题背景 在配置PVE服务器的过程中发现,当网络环境使用VLAN时,如果PVE宿主机的管理…

一种CDN动态加速首次访问加速方法

本文分享自天翼云开发者社区《一种CDN动态加速首次访问加速方法》.作者:蒋辉 具体方案如下: 1. 对于全站加速,节点内部的探测采用的非请求触发式探测(已实现),在首次访问时,使用配置的顶层父方案作为回源节点回源…

CF1716题解

CF1716A 不难发现,只保留一个1即可,其余的怎么变都可以,所以变成k个后,直接取max在序列中有1的情况下必然可以构造出来点击查看代码 #include<bits/stdc++.h> using namespace std; const int N=55; int t,n…

使用vosk模型进行语音识别

模型分享: 通过网盘分享的文件:vosk-model-small-cn-0.22.zip链接: https://pan.baidu.com/s/1FEH1xwDucdC3cEZSAyDOwQ?pwd=k8p5 提取码: k8p5 通过网盘分享的文件:vosk-model-cn-0.22.zip链接: https://pan.baidu…

国外 网站设计中国住房和城乡建设部网站资质查询

文章目录 前言一、技术是推动社会发展的基本动力1.人为什么能成为万物之长呢&#xff1f;2.人为什么要发明工具&#xff0c;进行进化呢&#xff1f;3.人是如何发明工具的&#xff1f;4.为什么要有不同的岗位和行业&#xff1f; 二、计算机(操作系统)发展的基本脉络1.第一台计算…

网站做实名验证成都广告设计培训班

世界上只有一种英雄主义&#xff0c;就是看清生活的真相之后依然热爱生活。对于 Lombok 我相信大部分人都不陌生&#xff0c;但对于它的实现原理以及缺点却鲜为人知&#xff0c;而本文将会从 Lombok 的原理出发&#xff0c;手撸一个简易版的 Lombok&#xff0c;让你理解这个热门…

AI Agent如何重塑人力资源管理?易路iBuilder平台实战案例深度解析

来源|商学院9月刊 文|吕笑颜 ID | BMR2004 导读:本文深度报道了易路iBuilder作为国内首个HR垂直AI Agent操作系统,如何通过39个智能体全面重构人力资源管理价值链。文章基于对易路CEO王天扬的专访,系统阐述了iBui…

docker-compose + macvlan + Elasticsearch - 9.1.4 + Kibana - 9.1.4

操作过程创建工作目录mkdir -p /opt/porsCloud/24-elastic进入工作目录cd /opt/porsCloud/24-elastic创建必要的目录mkdir es_conf es_data es_logs es_plugins kibana_conf kibana_data赋予权限chown -R 1000:0 es_co…

WinForm 计时器 Timer 学习笔记

1. Timer 是干啥的? 就是个“自动闹钟”: 你设定每隔多少毫秒(比如 1000 毫秒 = 1 秒),它就自动执行一段代码。 常见用途:实时显示时间 倒计时 定时刷新数据 轮询状态2. 怎么用?三步搞定(WinForm 拖控件方式)…

RocketMQ入门:基本概念、安装、本地部署与集群部署 - 详解

RocketMQ入门:基本概念、安装、本地部署与集群部署 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

重庆制作网站公司简介梵克雅宝五花手链

React中的“端口&#xff08;Portals&#xff09;”是一种将子节点渲染到DOM****树以外的部分的技术。在React应用中&#xff0c;通常情况下组件的渲染是遵循DOM的层次结构&#xff0c;即子组件会渲染在父组件的DOM节点内部。然而&#xff0c;有些情况下&#xff0c;开发者可能…

【LeetCode】122. 买卖股票的最佳时机 II

122. 买卖股票的最佳时机 II 区间内,差值最大,注意并不是最低值和最大值差值就是最大,例如,3,7,1,3,4。差值最大是7-3 解法一若价格一直往下跌,不买入 假设第一天买入,若买入后价格往下跌,应该下一天买入 若…

VSCode 使用技巧笔记

VSCode 笔记备忘插件Git History (donjayamanne.githistory)可以按行查看 git 历史记录Git Graph (mhutchie.git-graph)Bookmarks (alefragnani.bookmarks)highlight (debugpig.highlight)高亮选中的词 小技巧选择包含…

Ansible + Docker 部署 Apache Kafka 3.9 集群

Ansible + Docker 部署 Apache Kafka 3.9 集群1. 准备工作 1.2 主机列表IP 主机名 内存(GB) CPU核数 磁盘 操作系统 CPU 架构10.0.0.13 arc-pro-dc01 my.registry.com 16 1 500GB CentOS 7.9.2009 x86_6410.0.0.14…

深入了解一波JVM内存模型

深入了解一波JVM内存模型 JDK体系结构与跨平台特性介绍通过官方的结构图看出,JVM提供底层的平台支持,JRE提供运行环境所必须的类,在这个基础上去跑我们的java程序。JVM为我们屏蔽了操作系统的差异性,使java程序得以…