18|被忽视的变量:带你全面认识JVM中的变量
JVM 中的变量
静态类型和实际类型
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了JVM中变量对内存管理和垃圾回收机制的重要影响。首先介绍了静态类型和实际类型的概念,以及多态的实现原理。随后详细解读了变量的生存空间,包括栈上、堆中和方法区中的变量创建位置和生命周期。此外,还探讨了不同类型引用的特性和使用场景,如强引用、软引用、弱引用和虚引用。最后指出了在不同场景需求下选择不同引用类型可以更有效地管理内存,提高程序性能。文章还对命令式编程和声明式编程的区别进行了阐述,强调了声明式编程更注重描述问题的“是什么”,而不是解决问题的“如何”。通过理解这些概念,读者可以更好地理解变量的静态类型和实际类型之间的关系、多态的原理、不同引用类型的特点和用途,以及命令式编程和声明式编程的区别。整体而言,本文对读者理解JVM和Java程序的运行机制具有很大帮助。
《云时代的 JVM 原理与实战》,新⼈⾸单¥59
全部留言(3)
- 最新
- 精选
- 黄海峰感觉,声明式编程就是封装了一下命令式编程而已
作者回复: 你的理解有一定道理。实际上,声明式编程是一种更高级别的抽象,它强调的是“做什么”,而非“怎么做”。而命令式编程则是具体制定了执行步骤,告诉计算机“怎么做”。 在声明式编程中,我们只需要描述我们想要什么,而不需要详细描述如何得到它。这种编程方法抽象了很多底层细节。比如SQL就是一种典型的声明式语言,在编写SQL查询时,我们并不需要关心数据库如何寻找或排序数据,只需声明我们想要什么样的结果。 而在命令式编程中,我们一步步告诉计算机如何完成任务,每一步都必须详细描述。大部分编程语言,像C,Python,Java等都属于这种类型。 当然,为了实现声明式编程的语言或框架,背后往往需要命令式编程做支撑,所以你可以说声明式编程封装了命令式编程。但这样的封装为我们的编程指明了更清晰的目标,并且能够让我们的代码更易读和简洁,这是其价值所在。而声明式与命令式区别,也可以看成是阿隆佐邱奇和图灵的区别,建议你看一下https://www.yinwang.org/blog-cn/2013/07/13/church-turing
2023-10-09归属地:广东2 - ple这儿表达有些误解,Java8以后文中的静态变量存储在堆上。https://openjdk.org/jeps/1222024-01-21归属地:浙江2
- 八宝我们还可以从哪些视角来看待 Java 中的变量? 从线程安全的角度看,常量天生安全,那么我们用的最多的变量呢? 1.方法区创建的变量(既静态变量),并发访问时会存在线程安全问题,需要加锁来保证数据的正确性。 2.堆中创建的变量,如果不存在逃逸现象,不存在跨线程使用,不需要考虑线程安全; 涉及到多线程访问,如 HashMap 等容器的并发 put,就要加锁或改用线程安全的容器。 3.如果在栈上创建的变量,生命周期都是方法内,随着方法的执行,出栈就会被回收,不需要考虑线程安全。2023-12-20归属地:河南