- 博客(36)
- 资源 (3)
- 收藏
- 关注
原创 Java虚拟机监控工具
本文将通过真实案例场景,演示6款主流工具的组合使用技巧,助你快速定位90%以上的线上故障。案例:某电商系统突发Full GC,通过jmap -histo发现com.example.Order对象占用内存达GB级别,经追溯发现是未关闭的Redis连接池导致对象堆积。记住:最好的监控工具不是最强大的那个,而是最适合业务场景的组合方案。解读:新生代Eden区利用率(EU/EC=89%)持续高位,老年代OU已满(100%),需调整-Xmn和-XX:MaxPermSize参数。
2025-02-27 22:40:54
378
原创 @Contended
在这个例子中,`counter1` 和 `counter2` 被标记为 `@Contended`,这意味着编译器会在它们之间插入额外的填充字段,以确保它们不会位于同一缓存行中。- **优化多线程性能**:在高并发场景下,使用 `@Contended` 可以显著提升性能,尤其是在频繁更新的状态变量上。- **性能开销**:虽然 `@Contended` 可以减少伪共享,但它也会增加对象的内存占用,因为需要额外的填充字段。### `@Contended` 注解的作用。
2025-01-22 20:12:25
203
原创 jvm学习总结
在硬盘上查找并通过io读写字节码文件,使用类时才加载,例如调用来的main方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。当我们使用java命令运行某个main函数启动程序时,首先需要通过类加载器把主类加载到JVM.主要用到的类为loadClass,loadClass的类加载过程有如下过程。加载--》验证--》准备-》》解析》》初始化》》使用》》卸载。对类的静态变量初始化为指定的值,执行静态代码块。
2025-01-21 10:38:59
817
1
原创 jvm中jdk常用的几个命令总结
jinfo 是 Java 平台上一个用于查看和修改 Java 进程启动参数(Java 系统属性和 VM 选项)的命令行工具。对于涉及到 JNI 调用或者使用了 native 库的 Java 应用,此选项会同时显示 Java 线程和关联的本地线程的堆栈信息。如果需要向 jstack 使用的 JVM 传递额外参数(如 -J-d64 以指定 64 位模式),可以使用 -J 选项前缀。例如:./heapdump.hprof。在输出的线程堆栈中包含关于锁的持有者、等待者等更详细的锁信息,有助于分析线程间的同步问题。
2024-04-10 23:05:20
520
原创 spring Ioc源码解读(注解类的)一
Spring IoC(Inversion of Control,控制反转)容器是Spring框架的核心组件之一,用于管理和组织应用中的Java对象(也称为Bean)。IoC容器负责创建、配置、组装并管理Bean的生命周期。
2023-12-23 15:11:48
515
原创 jvm基础知识总结
如果应用程序需要实现特殊的类加载行为,可以通过自定义类加载器来扩展应用程序类加载器。这样可以实现一些定制的类加载策略,比如从数据库中加载类定义等。
2023-12-10 22:04:17
1164
1
原创 常见的扩容机制
扩容机制通常指的是在计算机科学和软件开发中用户动态调整数据结构大小的一种策略,这通常涉及到动态分配额外的内存空间,以便在数据量增加时能够容纳更多的元素。以下是常见的扩容机制;
2023-12-08 15:54:54
601
原创 反射基本介绍
是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
2023-11-11 14:55:04
190
3
原创 jvm简单介绍
Java虚拟机(JVM)是Java技术的核心之一,它负责执行Java字节码,提供了Java程序一个运行环境。JVM是Java程序跨平台的关键,因为它可以在不同的硬件和操作系统上运行,只要这些系统上有合适的JVM。JVM是Java技术的核心之一,它提供了Java程序一个运行环境。了解JVM的组成、工作原理以及优化策略对于提高Java程序的性能和稳定性非常重要。在实际应用中,需要根据不同的应用场景和需求进行适当的调整和优化,以充分发挥JVM的潜力。JVM的工作可以分为四个阶段:加载、链接、初始化和执行。
2023-11-09 20:10:02
70
原创 HashMap深入介绍
在查找时,我们先将被查找的键和子数组的中间键比较。如果被查找的键小于中间键,我们就在左子数组中继续查找,如果大于我们就在右子数组中继续查找,否则中间键就是我们要找的键。HashMap是我们工作中最常用到的。对于put和get方法详细介绍。
2023-11-09 19:49:49
191
原创 谨慎的使用clone
实现cloneAble接口的类是为了提供一个功能适当的公有的clone方法:为了达到这个目的,类及所有超类都必须遵守一个相当复杂的,不可实施的,并且基本上没有文档说明的协议,无须调用构造器可以创建对象。方法执行的是浅复制,它只会复制对象的字段值,而不会递归复制嵌套对象。在许多情况下,更好的替代方法是使用拷贝构造函数或工厂方法来创建对象的副本,以便更明确地控制对象的复制行为。方法在不同的类和库中的行为可能会不一致,因为它的默认实现是基于浅复制的。方法是Java中的一个方法,用于复制对象。
2023-11-07 21:47:12
102
原创 try-with_resource优先于try-finally
是一种更现代、更安全且更易于维护的资源管理方式,因此在Java 7及更高版本中,它通常被视为首选的方法来处理需要关闭的资源。做资源管理器顺序,无论是否发生异常,资源的方法会按照与初始化相反的顺序被调用,这确保了资源被逆序关闭,即先打开的资源最后被关闭。这是一个更好的替代方案,尤其是在需要确保资源关闭时,它比传统的。多资源管理器,资源对象会按照他们在代码中声明的顺序进行初始化,这是通过资源对象的构造函数来完成的。会自动关闭在资源区块中声明的资源,而无需手动编写关闭代码。块,增加了代码的复杂性。
2023-11-07 21:33:47
187
原创 作为程序员来说前段好还是后端好
现在全栈开发已经很普遍了,特别是最近经济不好,好多公司都在降本增效,所以全栈肯定是未来的趋势,对于个人成长来说可能不太利于个人的深度成长,但是对于公司来说,可能会省一笔费用,我建议的话,就是虽然工作是全栈开发,但是我们还是不要忘记自己的主要方向,能在下班时间进行充电,增加自己的竞争力。此为内容创作模板,在发布之前请将不必要的内容删除。
2023-10-01 22:34:46
216
原创 docker 经常用到的一些命令
docker 是一种容器化平台,可以帮助开发者将应用程序及其依赖打包成了一个独立的、可移植的容器,以下是常用的docker命令:1. 查看和管理镜像:
2023-08-12 21:14:25
93
原创 spring Data 常用类介绍系列2-EntityManagerFactory介绍
在Spring Data中,SessionFactory是用于创建和管理Hibernate的Session的核心组件之一。然而,从Spring Data JPA(Java Persistence API)版本2.0开始,推荐使用JPA的标准EntityManagerFactory来代替Hibernate的SessionFactory,以便更好地与JPA整合。这可能是因为你在使用一些非标准的JPA实现,比如Hibernate,或者这段代码来自一个整合了Hibernate的环境中。
2023-07-29 17:00:26
845
原创 java 动态代理(二)
类是实现动态代理的主要类,他提供了静态方法newProxyInstance(),该方法用户创建代理对象。newProxyInstance()方法接受三个参数:ClassLoader loader、Class[] interfaces和InvocationHandler h。其中,ClassLoader用于指定代理类的ClassLoader,interfaces用于指定代理类需要实现的接口,InvocationHandler用于指定代理类中的调用处理程序。
2023-04-02 15:58:58
152
原创 创建和销毁对象
1.用静态方法代替构造器首先,对于一个类而言,为了让客户端获取他自身的一个实例,最传统的方法就是提供一个公有的构造器,除此之外,还有一个方法,就是在每个程序员的工具箱中占有一席之地,类可以提供一个公有的静态工厂方法,他只是一个返回类的实例的静态方法。下面是一个简单的实例:这样处理的话,也有优势,也有劣势。优势下面这些:1.静态工厂方法与构造器不同的第一个优势在于,他们有名称,如果说构造的参数本身没有确切的描述正被返回的对象,那么具有适当名称的静态工厂会更容易使用,产生的代码更容易阅读,比
2022-04-17 10:13:09
90
原创 java11的一些新的特性
java8和java11相比多了一些新的特性1.本地类型推断对于什么是本地类型推断呢?我举个例子var a="abc";可以直接通过右边的表达式来推断a是字符串类型,等价于String a="abc;2.增加了字符串的一些处理2.1新增了isBlank() 判断字符串是否为字符串;"".isBlank(); " ".isBlank(); //都返回true2.2.strip(); 去掉首位空格" lcy ".strip();//返回lcy" lcy ".stri...
2021-04-27 21:27:32
394
2
原创 mysql索引学习总结
简介优势 降低数据库的io成本 降低了cpu的消耗 劣势 索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录,所以索引也是占用空间的 虽然提高了查询速度,但是会降低更新表的速度,如果对表进行insert、update、和delete。因为更新表,不仅要保存数据,还要保存一下索引文件每次更新添加了索引列的字段,都会调整更新带来的兼职变化后的索引信息 索引分类 单值索引 即一个索引只包含当个列,一个表可以有多个单列 唯一索引 索引列的值必须唯一...
2021-03-17 22:24:38
137
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人