静态方法、实例化方法与线程安全

静态方法与实例化方法

大家在使用 Java 的时候,一定都有一个共识,少使用静态方法,要多使用实例化方法,这样会更稳妥。

首先,先来澄清一下对静态方法和实例化方法的误解:

1、静态方法常驻内存,实例方法不是

事实上,静态方法和实例方法都是在第一次被调用时被加载,在加载时机和占用内存上是一样的。

2、静态方法分配在堆上,实例化方法分配在堆栈上

事实上,所有方法都不会在堆栈上分配内存。字段是用来存储每个实例对象的信息的,所以字段会占用内存,每个实例对象都会在内存中有一份所有字段的拷贝。但方法不一样,无论有多少个实例对象,它的方法的代码都是一样的。因此无论是 static 还是 non-static 方法,都只存在一份代码,也只占用一份内存。


从编程思想上,单例的出现并不是为了解决什么高深复杂的性能之类的问题,它只是面向对象的一种体现,可以继承拓展,可以实现接口,比较灵活。静态类更像是一个方法的集合,提供全局的访问而已, 比如大多数的 Util。

This chapter requires login to view full content. You are viewing a preview.

Login to View Full Content

Course Curriculum

3

框架与 I/O:Spring、Netty 与 Web 容器

理解 Spring Boot 自动装配、AOP 与事务原理,掌握 Netty Reactor 模型及 Tomcat 连接处理机制,构建高内聚、易扩展的应用服务层。
4

高性能中间件:消息、缓存与存储

熟练运用 MySQL 索引/事务、Redis 缓存策略、Kafka/RocketMQ 消息可靠性,以及 ZooKeeper 分布式协调,搭建稳定、解耦的分布式数据底座。
6

云原生:容器化、可观测性与工程效能

通过 Docker/K8s 实现弹性部署,集成 Metrics/Logs/Traces 构建可观测体系,推动 DevOps 与自动化,让架构在云上持续交付与进化。