![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java核心
文章平均质量分 94
Java核心知识包括:JVM、多线程、集合相关、IO框架、新版本介绍等
Jeremy_1022
我是一名资深的Java开发工程师,拥有丰富的行业经验,专注于电商订单管理系统(OMS)、保险、基金和支付等相关业务的开发。在多年的职业生涯中,我始终坚持记录笔记,积累了大量的专业知识和技术心得。
我热衷于将复杂的技术问题简化,并通过清晰、易懂的方式分享给他人。为了更广泛地传播知识,我决定将我的笔记和经验整理成文章,并开始维护一个公开的博客。我的目标是提供正确、完整且易于理解的内容,与同行更好地理解和应用Java技术的和探索新的技术。
展开
-
JVM专题一:深入分析Java工作机制
先思考一下几个问题:1、Java是如何做到一次编译出处运行的?2、如何在jvm的内存中找到合适的内存区域存放对象的呢?3、如何解决并发情况内存分配问题?4、什么时候可以在栈上分配呢?栈上空间那么小,怎么能放对象的呢?5、JVM内存规整的情况?不规整的时候呢?内存不够又该怎么处理?首先我们来解决第一个问题,Java是如何做到一次编译出处运行的?1、回想从我们在开发的时候,首先是要在去下载相应版本的JDK,然后配置对应的环境变量。在编译器如IDEA中选择相应的配置,之后才开始在编译器中进行编码。原创 2020-09-04 15:27:32 · 197 阅读 · 1 评论 -
JVM专题二:Java如何进行编译的
通常我们将编程语言分为和,通常高级语言因为其易用性和可移植性而被广泛使用,而低级语言在需要对硬件进行精细控制时非常有用,例如在嵌入式系统编程或操作系统开发中。更接近人类语言,易于阅读和编写,它们提供了抽象层,使得程序员可以不必关注底层硬件细节。Java、C、Python等都是高级语言的例子,它们允许开发者使用高级的语法和结构来编写程序,然后通过编译器或解释器将这些代码转换成机器可以执行的指令。,如机器语言和汇编语言,更接近于计算机硬件。机器语言由一系列二进制代码组成,是计算机可以直接执行的指令。原创 2024-06-20 15:58:35 · 27824 阅读 · 0 评论 -
JVM专题三:Java代码如何运行
第二篇文章我们通过对高级语言低级语言不同特性的探讨引出了Java的编译过程。有了前面的铺垫,咱们今天正式进入Java到底是如何运行起来的探讨。目前大部分公司都是使用maven作为包管理工具,当我们运行mvn compile命令后,会在我们项目下生成一个target目录,该目录会有一个个classes文件。这个过程其实就是把硬盘里的文件加载到计算机内存的过程,只是这部分内存交给JVM管理了。接下来点击main方法,JVM要运行这些”.classes"文件,此时我们今天的主角就要出场了’原创 2024-06-20 18:10:34 · 418 阅读 · 0 评论 -
JVM专题四:JVM的类加载机制
Java中的类加载机制是Java运行时环境的一部分,确保Java类可以被JVM(Java虚拟机)正确地加载和执行。:这个阶段,JVM会通过类加载器(ClassLoader)读取类的二进制数据(.class文件),并将其转换为方法区中的运行时数据结构。这个过程涉及到类的名称查找和字节码的加载。:在链接阶段的第一步,JVM会确保加载的类符合JVM规范,没有安全问题。这个过程会检查字节码的格式是否正确,确保类的结构符合规范,比如确保所有方法调用都是有效的,没有非法访问等。原创 2024-06-21 21:16:55 · 27843 阅读 · 0 评论 -
JVM专题五:类加载器与双亲委派机制
自定义类加载器是 Java 动态加载类的一种强大机制,它允许开发者根据特定的需求来加载类。这种机制特别有用在需要动态加载或更新类定义的场景中,例如在热部署、模块化应用、或者需要从非标准源加载类文件等情况下。继承性:自定义类加载器需要继承类,并重写findClass方法来实现自定义的类查找逻辑。加载逻辑:开发者可以在findClass方法中实现自己的类加载逻辑,例如从数据库、网络、文件系统等非标准位置加载类文件。双亲委派模型:自定义类加载器同样遵循 Java 的双亲委派模型。原创 2024-06-21 23:24:56 · 27854 阅读 · 0 评论 -
JVM专题六:JVM的内存模型
前面我们通过等内容了解到了如何从我们编写的一个.Java 文件最终加载到JVM里的,今天我们就来剖析一下这个Java的‘中介平台’JVM里面到底长成啥样。原创 2024-06-22 22:32:15 · 28321 阅读 · 0 评论 -
JVM专题七:JVM垃圾回收机制
中,我们介绍了JVM内存主要分哪些区域,这些区域分别是干什么的,同时也举了个例子,在运行过程种各个区域数据是怎样流转的。细心的小伙伴可能发现一个问题,在介绍完方法弹栈以后就没有介绍后续流程了。方法执行完以后,堆内存存放的对象实例咋整呢,带着这样的疑问进入今天的内容。原创 2024-06-23 22:17:16 · 27634 阅读 · 0 评论 -
JVM专题八:JVM如何判断可回收对象
在中提到JVM的垃圾回收机制是一个自动化的后台进程,它通过周期性地检查和回收,帮助管理内存资源,确保应用程序的高效运行。今天就让我们来看看JVM到底是怎么定义“垃圾”对象的。原创 2024-06-24 17:15:21 · 867 阅读 · 0 评论 -
JVM专题九:JVM分代知识点梳理
新生代GC(Minor GC)通常更频繁,使用复制算法,回收速度快,影响较小。老年代GC(Major GC或Full GC)较少见,使用标记-清除(可能伴随整理)算法,回收速度慢,可能引起较长时间的暂停。JVM的垃圾回收策略和算法可以根据具体的垃圾回收器和JVM参数进行调整,以适应不同的应用场景和性能要求。在JVM中,永久代(Permanent Generation,简称PermGen)是方法区的一种实现,主要用于存储类信息、常量、静态变量等数据。原创 2024-06-25 16:15:16 · 1153 阅读 · 0 评论 -
JVM专题十:JVM中的垃圾回收机制
在中,我们主要介绍了JVM为什么采用分代算法,以及相关的概念,本篇我们将详细拆分各个算法。原创 2024-06-25 19:28:57 · 28616 阅读 · 0 评论 -
JVM专题十一:JVM 中的收集器一
分代收集器和分区收集器,分代收集器的代表是 CMS,分区收集器的代表是 G1 和 ZGC,下面我们来看看各个收集器之间的联系与版本。Java虚拟机(JVM)中不同版本的垃圾收集器(GC)及其引入的Java Development Kit(JDK)版本的概述。原创 2024-06-26 18:41:47 · 3412 阅读 · 0 评论 -
JVM专题十二:JVM 中的收集器二
上一篇咱们介绍了垃圾收集器的分类,已经主流的分代垃圾收集器重点看了CMS与三色标记算法,本篇咱们继续来看意G1、ZGC等。原创 2024-06-26 19:45:58 · 1023 阅读 · 0 评论 -
JVM专题十三:总结与整理(持续更新)
我们项目根据不同服务数据不一样,之前待在某互联网保险公司有2kw最有的活跃用户,我们的核心服务是4核8g,峰值QPS 4-5000,tps-3-400。但是任何套路的问题都不适用于所有场景,只是提供一个思路,主要还是要了解各个回收器的优缺点,然后根据自己项目的实际情况去设置。图解JVM主要是放了前面12个章节的我们给大家画的图,做了整体的汇总,大家可以根据图区回忆我们所说的内容,查缺补漏。: 设置JVM可以使用的最大堆大小。: 动态追踪Java应用程序的工具,可以在不重启应用的情况下添加追踪点。原创 2024-06-27 23:10:51 · 770 阅读 · 0 评论