
Java/Jvm
文章平均质量分 72
Java语言,Jvm研究
赵牧野
代码洁癖+努力学好知识的一块块,不求多,但求专精。
展开
-
Java技术面试(一面)
如何面试别人原创 2024-08-16 16:54:26 · 1216 阅读 · 1 评论 -
Java异常体系
ThrowableException(受检查异常)(非检查异常)Error。原创 2024-05-31 15:15:13 · 500 阅读 · 0 评论 -
TransmittableThreadLocal原理
TransmittableThreadLocal(简称TTL)是阿里巴巴开源的一个Java库,用于解决线程池中线程本地变量传递的问题。其底层原理主要是基于Java的机制并对其进行扩展,以支持在父子线程间以及线程池中任务切换时,能够传递和继承变量的值。: TTL继承自但与不同的是,TTL解决了在已经存在的线程(如线程池中的线程)之间传递值的问题。: 对于异步任务,TTL确保了即使在异步执行的上下文中,父线程的状态也能被正确地传递给处理该任务的子线程。原创 2024-05-30 22:57:30 · 1267 阅读 · 0 评论 -
Java的序列化接口
当父类实现了接口并且定义了字段,子类是否需要再定义一个字段,取决于具体需求。尽管子类可以继承父类的,但为了确保子类的序列化版本一致性,建议在子类中显式定义字段。这不仅能避免由于自动生成导致的潜在问题,还能提供明确的版本控制。原创 2024-05-27 14:30:58 · 478 阅读 · 0 评论 -
弄懂 JRE、JDK、JVM 之间的区别与联系
针对不同的系统有不同的 jvm 实现,有 Linux 版本的 jvm 实现,也有 Windows 版本的 jvm 实现,但是同一段代码在编译后的字节码是一样的。引用上面的例子,在 Java API 层面,我们调用系统声音设备的代码是唯一的,和系统无关,编译生成的字节码也是唯一的。我们知道,不同的操作系统向上的 API 肯定是不同的,那么如果我们想要写一段代码调用系统的声音设备,就需要针对不同系统的 API 写出不同的代码来完成动作。甚至准确的来说,它俩是一样的,无论是用哪一个都是可以的。原创 2021-02-18 10:44:32 · 288 阅读 · 1 评论 -
JVM调优原理与实践
1、JVM调优1、JVM调优JVM(Java虚拟机)调优主要是为了提高Java应用的性能,减少延迟,增加吞吐量,以及确保系统的稳定性。以下是JVM调优的一些常用手段和方法:-Xms-Xmx-XX-XssJVM调优是一个需要不断实验和监控的过程,需要根据应用的实际表现和需求来调整参数。在进行调优时,一定要有针对性,逐步调整,并监控调整效果,以免盲目调整导致性能下降。此外,一些现代JVM实现(如OpenJ9、GraalVM)可能提供了自己独特的调优选项和工具,使用时需要查阅对应的文档。原创 2018-09-07 11:44:35 · 214 阅读 · 1 评论 -
Jvm主要组成部分及其作用
JVM使用即时编译(JIT)技术将字节码转换成特定平台的机器代码,这一过程是自动的,对于Java程序员来说是透明的。它包括一个解释器(Interpreter)用于解释字节码,一个即时编译器(Just-In-Time, JIT compiler)用于将热点代码编译成本地机器码以提高效率,以及一个垃圾收集器(Garbage Collector)用于管理Java堆内存中的对象生命周期。Java编译的代码通常情况下是直接在JVM(Java虚拟机)中执行的,而不需要通过本地库接口(JNI)。原创 2021-02-18 10:47:10 · 788 阅读 · 1 评论 -
HashMap、LinkedHashMap、TreeMap
HashMap实现了Map接口,并且其底层是基于哈希表(散列表/数组)的数据结构。它使用键(Key)对象的哈希码来确定键值对(Entry)存储的位置。在Java 1.8及以后,当链表长度大于一定阈值(默认是8)时,链表会被转换为红黑树来提高搜索效率。原创 2024-03-31 21:52:15 · 2614 阅读 · 0 评论 -
为什么响应式编程无法从Threadlocal里获取数据?
响应式编程模型(如 Spring WebFlux)和传统的 Servlet 基于线程的模型(如 Spring MVC)在处理请求的方式上有显著不同。在传统的 Spring MVC 应用中,每个请求都是由一个固定的线程处理的,因此可以便利地使用。然而,在响应式编程模型中,因为处理流程可能在多个线程之间切换,所以无法保证整个请求处理链在同一个线程中执行。是跟随响应式流的,并且可以在响应式链中的不同操作和不同线程间保持数据的连贯性。的数据是绑定到特定线程的,当请求处理跳转到新的线程时,原线程的。原创 2024-03-28 10:22:26 · 740 阅读 · 0 评论 -
ThreadLocal为什么能实现线程数据隔离
为何能在多线程环境中保持线程局部变量独立性的原理。,所以不同线程看到的映射实际上是不同的。,所以它们保存的值是独立隔离的。),然后在当前线程对象内部查找或修改。实例是共享的,但是每个线程都有自己的。实例存取值,但也是线程隔离的。操作时,它会先获取当前线程(实例,作为映射的键,但是由于。因此每个线程既使通过同一个。类的一个字段存在的。,每个线程都有自己独立的。实例this作为键,与。的源码来进一步理解。方法会访问当前线程的。因此,关键点在于虽然。原创 2024-03-18 16:34:08 · 480 阅读 · 0 评论 -
try catch finally 中包含return的几种情况,及返回结果
第一种情况:在try和catch中有return,finally中没有return,且finally中没有对try或catch中要 return数据进行操作的代码,这种情况也是最好理解的。第二种情况:在try和catch中有return,finally中没有return,但finally中有对try或catch中要 return数据进行操作的代码要返回的数据是基本数据类型还是引用数据类型,...原创 2020-04-21 18:27:20 · 699 阅读 · 0 评论