- 博客(13)
- 收藏
- 关注
原创 Java实例对象在堆内存和方法区中存储的内容
堆内存负责存储对象的和String方法区(JDK8+ 称为)存储类的,与具体实例无关,供所有实例共享。publicfinalstatic通过newJVM 根据new的类名,在方法区中查找该类的元数据。若未加载,则触发类加载过程。根据方法区中记录的类结构信息(如对象大小),在堆中划分一块内存空间。填充 Mark Word(初始哈希码、GC 年龄等)和类型指针(指向方法区的类元数据)。根据方法区中字段表的偏移量,将成员变量初始化为默认值(如int初始化为 0,引用初始化为null从方法区中获取。
2025-03-13 14:42:48
961
原创 Jackson在反序列化JSON为java对象时需要无参构造函数
Jackson 在反序列化 JSON 数据为 Java 对象时,默认需要一个无参构造函数。类中只有一个带参数的构造函数,没有无参构造函数,这会导致 Jackson 无法创建。类中添加无参构造函数。可以手动添加,也可以使用 Lombok 的。
2025-03-11 18:19:17
635
原创 Java 开发中组(Group)和工件(Artifact)
概念作用示例Group定义组织或项目的命名空间org.apachecom.googleArtifact标识具体的模块或产物gson关系Group是逻辑上的分类,Artifact是具体的实现。两者共同确保依赖的唯一性,是构建工具管理依赖的核心机制。
2025-03-11 16:16:32
734
原创 Class 对象的核心组成
Class对象是元数据的访问入口:核心是指向方法区元数据的指针。附加信息提升效率:缓存类名、类加载器引用等,优化高频操作。设计平衡:兼顾性能、安全性和灵活性,支撑反射、动态代理等高级特性。理解Class对象的结构,有助于深入掌握 Java 反射、类加载机制及内存模型,为性能调优和复杂系统设计打下基础。
2025-03-08 12:12:09
895
原创 .Class文件和Class对象
Class对象是类的运行时元数据载体,由 JVM 在类加载阶段创建。每个类对应唯一Class对象,存储了类的完整结构信息。反射、动态代理、注解处理等高级特性均依赖Class对象。通过Class对象,Java 实现了“动态语言”特性(如运行时类型检查、方法调用)。
2025-03-08 12:11:54
1005
原创 是什么是类加载
在 Java 中,是 Java 虚拟机(JVM)将类的字节码文件(.class)加载到内存,并完成类的初始化(如静态变量赋值、静态代码块执行等)的过程。类加载是 Java 程序运行的基础机制,其核心目的是为类的首次使用做准备。
2025-03-08 12:11:40
495
原创 Static关键字修饰的属性创建时间
static属性的初始化与对象无关,它是类级别的成员,生命周期从类加载开始,到类被卸载结束。理解这一点是避免代码设计错误(如误用静态属性导致数据共享问题)的关键。
2025-03-08 12:11:07
369
原创 Java的方法区在哪
在Java中,**方法区(Method Area)**是Java虚拟机(JVM)内存结构的一部分,用于存储类的结构信息。在JDK 7及之前的版本中,方法区是一个独立的内存区域,通常被称为**“永久代”(Permanent Generation,简称PermGen)**。它是一个固定大小的内存区域,用于存储类的结构信息。方法区是JVM内存结构中的一个独立区域,与堆内存(Heap Memory)和栈内存(Stack Memory)并列。方法区是所有线程共享的内存区域,JVM通过。
2025-03-08 12:01:00
378
原创 JDK动态代理与CGLIB动态代理
•代码可维护性:优先使用接口+JDK代理,符合面向接口编程原则。•灵活性:需代理第三方库或无接口类时选择CGLIB。•性能关键场景:高并发方法调用推荐CGLIB+FastClass机制。
2025-03-06 13:22:57
424
原创 Spring 注解中 @Configuration 和 @Component 的区别
Component通过组件扫描机制自动发现并注册 Bean。Spring 会扫描指定包路径下带有@Component及其派生注解的类,将它们实例化并注册到容器中。优点是简单方便,适合快速开发和小型项目。缺点是不够灵活,对于一些复杂的 Bean 创建逻辑难以处理。通过@Bean注解手动定义 Bean。可以在配置类中使用 Java 代码来创建和配置 Bean,支持复杂的初始化逻辑和依赖注入。优点是灵活性高,可以根据具体需求定制 Bean 的创建过程。缺点是代码量相对较多,配置相对复杂。
2025-03-06 13:02:20
268
原创 final关键字
final通过限制引用可变性保障代码稳定性,但对象内容是否可变取决于具体实现。合理使用final可提升代码可读性、线程安全性和性能,但需注意其作用边界,避免误用导致灵活性下降。
2025-03-05 19:44:32
482
原创 VMware Workstation中Centos的ip地址和VMware Virtual Ethernet Adapter for VMnet8的IP关系
VMware® Workstation的虚拟网络编辑器给 VMnet8设置的ip网关是192.168.10.2,centos7的ip为19.168.10.100,将VMware Virtual Ethernet Adapter for VMnet8的ip设为192.168.10.1(自动IP也行)当CentOS 7虚拟机(IP地址为192.168.10.100)想要访问百度时,数据会按照以下步骤进行转发
2025-03-04 20:08:45
617
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人