Java基础
文章平均质量分 50
学亮编程手记
学亮编程手记
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java静态方法是否违背OOP?
不是所有逻辑都需要对象状态。强制为纯函数创建对象实例是过度工程化。原创 2025-11-12 16:14:42 · 389 阅读 · 0 评论 -
使用 GraalVM 编译 Java 程序为二进制文件
GraalVM 是一个高性能的通用虚拟机,支持 Java、JavaScript、Python、Ruby、R、WebAssembly等多种语言。通过它你可以将 Java 程序编译成本地二进制文件,大大提高程序的启动速度和运行效率。本文介绍如何在 Linux 系统上安装配置GraalVM.原创 2025-10-15 16:58:53 · 515 阅读 · 0 评论 -
Java JVM 元空间、堆内存和栈内存的回收与归还机制
内存区域是否归还操作系统?关键机制与条件元空间是(积极)类加载器被GC后,整块空闲的元空间内存块会被归还。堆内存视情况而定(保守)传统GC(如Parallel):基本不归还。现代GC(G1/ZGC):在满足条件(空闲比例高)时会归还。可通过等参数调节。栈内存是(通过线程)线程结束时,其栈内存被释放并归还给JVM进程内存池,可供JVM内部复用。最终结论:JVM作为一个成熟的管理式运行时环境,其内存管理策略是在性能和资源利用率之间做权衡。它不会像C/C++程序那样。原创 2025-09-30 21:13:03 · 902 阅读 · 0 评论 -
Java JDK 17 中的内存区域详解
内存区域线程共享/私有作用是否线程安全可能错误程序计数器私有存储下一条指令的地址是无虚拟机栈私有存储Java方法栈帧(局部变量、操作数栈等)是OOM本地方法栈私有为Native方法服务是OOM堆共享存储对象实例、数组否OOM方法区(元空间)共享存储类信息、常量、静态变量、JIT代码否OOM核心要点线程安全:只有共享的区域(堆、方法区)才存在线程安全问题,需要同步机制。错误类型:栈深度问题导致;内存不足导致。JDK 17:最重要的变化是方法区的实现使用元空间。原创 2025-09-30 20:43:54 · 790 阅读 · 0 评论 -
Linux 查看 JVM 进程实时占用内存
【代码】Linux 查看 JVM 进程实时占用内存。原创 2025-09-30 17:05:05 · 314 阅读 · 0 评论 -
C/C++ vs JVM 的内存管理
特性C/C++ 程序 (如 Doris BE)JVM 程序 (如 Flink TaskManager)内存模型直接管理,通过系统调用托管环境,拥有独立的堆释放行为free()通常直接归还给OSGC后通常在堆内保留,不主动归还OS资源视图全局视图:内存属于OS,按需取用领地视图:先划一大块地,内部管理空闲期内存进程RSS内存显著下降,可供他人使用进程RSS内存保持高位,无法被他人使用默认策略慷慨:不用就还保守/自私:不用也先占着。原创 2025-09-29 23:46:50 · 753 阅读 · 0 评论 -
JVM的“内存领地”意识及Flink的堆外内存
本文我们来探讨一下如下话题——flink jvm -Xmx的内存设置为20GB,这部分内存空闲时可用作Doris吗?下面我们来详细拆解这20GB-Xmx内存的“一生”,您就明白为什么了。原创 2025-09-29 23:44:49 · 753 阅读 · 0 评论 -
tomcat 8.5 属性配置文档手册
启用 APR/native 后,连接器将默认通过 JSSE 使用 OpenSSL,这可能比 JSSE Java 实现更优化,具体取决于所使用的处理器,并且可以与许多商业加速器组件进行补充。因为 Java 8 的 TLS 实现不支持 ALPN(即 HTTP/2 over TLS 需要),您必须使用基于 OpenSSL 的 TLS 实现以启用 HTTP/2 支持。如果不配置这些属性,返回的值将反映 来自代理服务器的连接的服务器名称和端口 ,而不是客户端接收到的服务器名称和端口 指导了最初的请求。原创 2025-09-24 11:38:40 · 765 阅读 · 0 评论 -
为什么Java中只有值传递?
值传递:方法接收的是实参值的副本。对形参的修改不会影响实参。引用传递:方法接收的是实参的地址本身(可以理解为实参变量在内存中的门牌号)。对形参的修改会直接影响实参,因为形参和实参指向的是同一个地址。Java 中的“引用”更像是一个“地址值”或“指针值”,它本身也是一个值。这是产生混淆的地方。System.out.println("调用前 person.name = " + person.getName());// 输出 Alice。原创 2025-09-22 20:59:21 · 946 阅读 · 0 评论 -
Java JMH 常见的基准测试场景代码示例
下面是一个完整的 JMH 示例,覆盖了常见的基准测试场景,包括方法性能比较、不同参数的影响、吞吐量测试、多线程测试等。原创 2025-08-18 16:24:38 · 758 阅读 · 0 评论 -
Java JMH 测试与 JMeter 测试的区别
两者可以互补使用 - JMH 优化关键代码,JMeter 验证整体系统性能。原创 2025-08-18 16:22:25 · 436 阅读 · 0 评论 -
Java基础:如何停止一个正在运行的线程?
虽然它确实可以停止一个正在运行的线程,但是这个方法是不安全的,而且是已被废弃的方法。来判断thread对象所代表的线程是否停止,但从控制台打印的结果来看,线程并未停止,这也证明了interrupted()方法的解释,测试当前线程是否已经中断。我们先来看看this.interrupted()方法的解释:测试当前线程是否已经中断,当前线程是指运行this.interrupted()方法的线程。不过还是建议使用“抛异常”的方法来实现线程的停止,因为在catch块中还可以将异常向上抛,使线程停止事件得以传播。原创 2025-08-08 17:00:19 · 946 阅读 · 0 评论 -
Maven配置示例:强制Maven使用本地仓库而不访问私服或远程仓库
【代码】Maven配置示例:强制Maven使用本地仓库而不访问私服或远程仓库。原创 2025-06-27 17:01:59 · 1107 阅读 · 0 评论 -
Java中通过缩小变量作用域让对象自动失效以提升GC效率(代码示例)
优先通过代码结构(作用域)管理对象生命周期,仅在特殊场景(如缓存、全局引用)中显式置。的让对象自动失效的方式,无需显式置。:方法中某个大对象仅在部分逻辑中使用。:避免循环中累积不必要的引用。:避免分支间的变量污染。,依赖 Java 的。原创 2025-06-20 22:01:03 · 436 阅读 · 0 评论 -
Java代码中是否需要显式置 null?及更优雅的替代方案
因为 JVM 的垃圾回收器(GC)会自动识别不可达对象。但在以下特殊场景中,显式置。原创 2025-06-20 21:59:29 · 678 阅读 · 0 评论 -
JVM垃圾回收中,当 obj = null 后,obj 本身及其成员变量引用的对象会被视为垃圾吗?
是一个复杂对象(包含成员变量引用其他对象),当。本身及其成员变量引用的对象会被视为垃圾吗?通过 finalize()出发无法再访问到它((说明两者均被回收)原创 2025-06-20 21:54:11 · 462 阅读 · 0 评论 -
关于JVM垃圾回收中“未被引用的对象”与“垃圾”的关系的理解
已不推荐使用(JDK 9+标记为废弃),生产代码应避免依赖此机制。(说明未被引用的对象被GC回收),这是JVM内存管理的基础保证。在正常代码中(不滥用。原创 2025-06-20 21:52:43 · 409 阅读 · 0 评论 -
对JVM三色标记灰色对象的理解
确保垃圾回收器不会遗漏对象引用关系,同时支持并发标记(用户线程修改引用时,通过写屏障维护标记正确性)。,这些引用对象可能仍是白色(垃圾回收器还不知道它们是否存活)。表示该对象已经被垃圾回收器从根(GC Roots)追踪到,表示该对象的内部字段(如。原创 2025-06-20 21:51:12 · 355 阅读 · 0 评论 -
jvm 查看最大堆内存:jcmd 和 PrintFlagsFinal 命令的区别
因为它揭示了 JVM 在运行环境中实际遵守的堆内存限制。都可以打印 JVM 参数,但 MaxHeapSize。如果发现不一致,jcmd。原创 2025-06-19 16:48:15 · 875 阅读 · 0 评论 -
java8 jvm参数大全官方文档
Synopsis 概要java [ 选项 ] 类名 [args]java [ 选项 ] -jar 文件名 [args]options 选项用空格分隔的命令行选项。请参阅选项。classname 类名要启动的类的名称。filename 文件名要调用的 Java 存档 (JAR) 文件的名称。仅与 -jar 选项一起使用。args 参数传递给 main() 方法的参数,以空格分隔。Description 描述java 命令启动 Java 应用程序。原创 2025-06-19 16:37:23 · 955 阅读 · 0 评论 -
CMS 垃圾回收器(UseConcMarkSweepGC)生产级JVM参数配置示例
ParNew + CMS 组合是Java 8及之前版本常用的老年代并发收集器组合,适用于对延迟敏感的中大型应用。原创 2025-06-19 14:14:54 · 881 阅读 · 0 评论 -
JVM三色标记垃圾回收算法详解
三色标记算法是现代JVM垃圾回收器(如G1、Shenandoah、ZGC等)中使用的核心算法之一,用于高效地标记存活对象。下面我将详细解释这一算法的工作原理。原创 2025-06-19 11:28:51 · 472 阅读 · 0 评论 -
jcmd jvm命令行工具使用详解
jcmd是一个非常有用的命令行工具,它随JDK一起提供,用于与正在运行的Java虚拟机(JVM)进行交互。它可以用来执行各种诊断和管理任务,如垃圾回收、线程转储、查看JVM参数等。下面我将结合几个具体场景来详细介绍如何使用jcmd。原创 2025-06-16 16:03:18 · 534 阅读 · 0 评论 -
jvm 基础:jcmd 和 PrintFlagsFinal 的区别及使用场景
jcmd和输出的关于的值不同,主要是因为它们获取和展示信息的方式不同。原创 2025-06-16 15:39:05 · 322 阅读 · 0 评论 -
java17 默认jvm生效参数解析
的默认值(基于机器配置),也可以手动调整以优化性能。这些参数大多是 JVM。原创 2025-06-16 09:58:43 · 460 阅读 · 0 评论 -
JVM参数详解:-XX:+PrintCommandLineFlags
这个参数是理解JVM实际配置的非常有用的工具,特别是在复杂的部署环境中,能够帮助开发者确认最终的JVM参数配置。是一个诊断型JVM参数,用于在JVM启动时打印出所有通过命令行显式设置或JVM自动推断的XX参数值。原创 2025-06-16 09:54:27 · 308 阅读 · 0 评论 -
Java 8 JVM中对象从年轻代(Young Generation)晋升到老年代(Old Generation)的过程浅析
在Java 8的JVM中,对象从年轻代(Young Generation)晋升到老年代(Old Generation)的过程是内存管理的重要机制。原创 2025-06-16 09:13:58 · 751 阅读 · 0 评论 -
JVM垃圾回收器详解与参数调优指南:G1 CMS PS+PO
结果:吞吐量提升至85%,总运行时间减少30%发现查询结果缓存被错误地放入静态Map。原创 2025-06-15 13:29:27 · 1306 阅读 · 0 评论 -
JVM参数调优策略对比分析: G1 vs CMS
可以先从G1GC开始,通过监控数据再精细调整参数。原创 2025-06-15 12:55:45 · 630 阅读 · 0 评论 -
Spring Boot应用内存居高不下问题分析与JVM参数针对性调优
针对您描述的Spring Boot应用在长时间查询后内存居高不下,但手动调用。原创 2025-06-13 17:28:26 · 267 阅读 · 0 评论 -
arthas最新版及文档下载及启动
如需诊断 jdk 6/7 应用,请点击。或者在解压后,在文件夹里有。解压后,在文件夹里有。原创 2025-06-13 08:54:17 · 466 阅读 · 0 评论 -
Java JMX 和 MBeans 管理扩展技术介绍
JMX就像是Java应用的"仪表盘",而MBeans就是仪表盘上的各种仪表和按钮。查看应用的各种指标(如内存、线程等)动态调整参数(如修改日志级别)执行管理操作(如清理缓存)更好地监控自己的应用为应用添加可管理性更方便地进行故障排查虽然现在有更现代的监控方案(如Micrometer/Prometheus),但JMX仍然是Java生态中重要的管理基础,很多工具底层仍然依赖JMX。原创 2025-06-10 20:37:02 · 1008 阅读 · 0 评论 -
Java JMX MBeans 技术介绍
MBeans()是 Java技术的一部分,用于管理和监控 Java 应用程序运行时的状态和行为。MBeans 是 JMX 中的核心组件,它们提供了一种标准化的方式,将应用程序内部的资源(如对象、配置、状态等)暴露为外部可管理的资源。接口名必须以MBean结尾,且定义要暴露的属性和操作。// 定义一个可读可写属性// 定义一个只读属性// 定义一个操作MBeans 是 Java JMX 技术的重要组成部分,用于暴露应用程序的运行状态和行为,以便进行监控和管理。原创 2025-06-09 20:24:27 · 835 阅读 · 0 评论 -
Java ForkJoinPool线程池的分治思想和使用示例:并行计算数组求和
这段代码很好地展示了ForkJoin框架的分治思想和使用方法,是并行计算数组求和的经典示例。这段代码演示了 Java 中。原创 2025-05-28 16:02:41 · 471 阅读 · 0 评论 -
Java CompletableFuture 与 ForkJoinPool 的关系
您也可以显式指定其他Executor// 使用自定义线程池。原创 2025-05-28 15:55:45 · 409 阅读 · 0 评论 -
Java CompletableFuture 代码示例:异步执行、链式调用、组合多个 Future、异常处理和超时控制等
是 Java 8 引入的一个强大的异步编程工具,它实现了Future接口并提供了更丰富的功能。以下是一些常见的。原创 2025-05-28 15:51:41 · 520 阅读 · 0 评论 -
Java CopyOnWriteArrayList 及写时复制机制详解
CopyOnWriteArrayList是Java并发包中提供的一种线程安全的List实现,采用"写时复制"(Copy-On-Write, COW)技术来保证线程安全。其核心思想是读取操作直接访问当前数据结构,而写入操作则先复制整个数据结构,在副本上进行修改,最后替换原数据结构。这种机制特别适合读多写少的场景,因为读取操作无锁,性能极高,而写入操作通过复制保证线程安全。CopyOnWriteArrayList的优点是读取性能高、线程安全、迭代安全,缺点是内存占用大、数据一致性弱、不适合频原创 2025-05-17 22:22:51 · 425 阅读 · 0 评论 -
HTTPS 的端口可以设置为任意端口吗?
但需满足技术配置和网络环境的限制。HTTPS 可配置为任意端口,但需权衡便利性与安全性。原创 2025-05-04 13:02:36 · 2181 阅读 · 0 评论 -
一次完整的HTTPS请求流程剖析
HTTPS(Hypertext Transfer Protocol Secure)是在HTTP基础上通过SSL/TLS协议实现加密、身份认证和数据完整性的安全传输协议。HTTPS通过TLS握手建立安全通道,结合非对称加密的密钥交换和对称加密的高效数据传输,实现了端到端的安全通信。其核心在于证书验证和密钥协商机制,确保传输的机密性、完整性和身份真实性。原创 2025-05-04 13:01:37 · 496 阅读 · 0 评论 -
maven基础:mvn指定settings.xml配置文件
【代码】maven基础:mvn指定settings.xml配置文件。原创 2025-03-16 10:37:03 · 532 阅读 · 0 评论
分享