java
文章平均质量分 65
yaoyaobird11
这个作者很懒,什么都没留下…
展开
-
java 任务cpu占用高排查
问题背景:DNS隧道检测app 在使用测试数据测试的时候,长时间cpu占用接近100%,flink webui显示反压 100%安全数据湖 > DNS隧道检测app CPU占用过高问题排查 > image2022-5-27_15-31-4.png问题排查:(1)下载arthas在官网上下载离线arthas包,或者直接用如下包(2)启动任务使用命令启动AlphaRunner/opt/flink/bin/flink run -c com.sangfor.alphasecurity.a原创 2022-05-27 16:11:29 · 477 阅读 · 0 评论 -
java中的clone
clone和new对象的区别clone()不会调用构造方法;new会调用构造方法。new对象时根据类型确定分配内存空间的大小, clone是根据原对象分配内存为什么要克隆?方便,克隆的对象可能包含一些已经修改过的属性,而new出来的对象的属性都还是初始化时候的值,所以当需要一个新的对象来保存当前对象的“状态”使用clone方式很方便;速度快,clone方法最终将调用JVM中的原生方法完成复制也就是调用底层的c++代码,所以一般使用clone方法复制对象要比新建一个对象然后逐一进行元素复制效率转载 2021-09-28 16:22:19 · 714 阅读 · 1 评论 -
jvm基础知识
hotspot jvm的架构图:更详细的架构图:以下分别介绍:类加载子系统运行时数据区执行引擎中的编译器执行引擎中的垃圾回收本地方法类加载子系统下图所示是 加载Dog.class过程中调用各类加载器的过程和各类加载器class文件的路径运行时数据区运行时数据区包括:程序计数器,本地方法栈,虚拟机栈,堆,方法区其中程序计数器/本地方法/虚拟机栈是线程独享的空间,堆和方法区是多线程共享空间堆区详细信息如下关于java中对象的存储:在堆中的存储:在栈中存储的是对象的引原创 2021-08-29 01:07:30 · 241 阅读 · 1 评论 -
CountDownLatch使用
CountDownLatch是什么?jdk1.5开始concurrent包里提供的,并发编程工具类。CountDownLatch这个类能够使一个线程等待其他线程完成各自的工作后再执行。CountDownLatch实现原理CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。APIcountDownLatch.countDow原创 2021-08-26 10:20:38 · 67 阅读 · 0 评论 -
CyclicBarrier 使用
CyclicBarrier 使用CyclicBarrier是什么CyclicBarrier也叫同步屏障,在JDK1.5被引入,可以让一组线程达到一个屏障时被阻塞,直到最后一个线程达到屏障时,所以被阻塞的线程才能继续执行。CyclicBarrier好比一扇门,默认情况下关闭状态,堵住了线程执行的道路,直到所有线程都就位,门才打开,让所有线程一起通过。应用场景运动会男子100米决赛,8名选手。每个运动员都就位后才开始。public class CyclicBarrierTest { pu转载 2021-08-26 09:11:24 · 99 阅读 · 0 评论 -
Java 锁基本概念 以及 Reentrantlock的特性
Java 锁中的基本概念1. AQS – 指AbstractQueuedSynchronizer类。AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现。AQS是独占锁(例如,ReentrantLock)和共享锁(例如,Semaphore)的公共父类。2. AQS锁的类别 – 分为“独占锁”和“共享锁”两种。(01) 独占锁 – 锁在一个时间点只能被一个线程锁占有。根据锁的获取机制,它又划分为“公平锁”和“非公平锁”。公平锁,是按照通过CLH等待线程按照先来先得的规则,公平的获取原创 2021-08-25 17:50:21 · 183 阅读 · 0 评论 -
java中的队列
一、队列的定义我们都知道队列(Queue)是一种先进先出(FIFO)的数据结构,Java中定义了java.util.Queue接口用来表示队列。Java中的Queue与List、Set属于同一个级别接口,它们都是继承于Collection接口。Java中还定义了一种双端队列java.util.Deque,我们常用的LinkedList就是实现了Deque接口。下面我们看一下类的定义:Queue & Dequepublic interface Queue<E> extends C转载 2021-08-23 11:17:26 · 1642 阅读 · 0 评论 -
缓存一致性协议
缓存一致性协议在执行程序时,每一条指令都是在CPU中执行的,执行指令过程中会包含读取与写入的操作。一般来说程序运行过程中的临时数据都存放在主存(即内存)中,由于CPU执行速度很快,但每次从内存读取数据和向内存写入数据的过程与CPU执行指令速度比起来要慢的多,若是每次对数据的操作都与内存进行交互的话,会大大降低指令执行的速度,为了提升性能,CPU中出现了高速缓存(cache,现在一般都有三级缓存)!CPU有了高速缓存之后,但程序在运行时,会将运算需要的数据从主存中复制一份到CPU的高速缓存中,接着进行读取原创 2021-08-16 15:19:38 · 1683 阅读 · 3 评论 -
Java VisualVM
Java VisualVM 概述内存堆Heap分析CPU分析线程分析死锁分析概述VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。本文主要介绍如何使用 VisualVM 进行性能分析及调优。自从 JDK 6 Update 7 以后已经作为 Oracle JDK 的一部分,位于原创 2021-08-12 16:37:51 · 323 阅读 · 0 评论