3.2对象已死? 3.2.1 引用计数法 在对象中加入一个引用计数器;很难解决循环引用; 3.2.2 可达性分析算法 GC Roots包含以下: 虚拟机栈中引用的对象 方法区中类的静态属性引用的对象; 方法区中常量引用的对象; 本地方法栈中JNI引入的对象; 虚拟机内部引用,基本数据类型对应的class对象、常驻的异常对象、系统的类加载器; 同步锁持有的对象; 虚拟机内部的回调、本地代码缓存; 3.2.3 再谈引用 如果reference 类型的数据中存储的数值代表的是另外一块内存的起始地址;就称改referenc…

2021/06/01 0条评论 383点热度 0人点赞 阅读全文

5ycode 被管理耽误的架构师。工作、学习过程中的知识总结与分享,jvm,多线程,架构设计,经验分享等。 28篇原创内容 公众号 当我们在生产调优的时候,有时候不确定当前的jvm哪些参数已过期。通过以下两种方式,可以确认当前jdk是否支持,以及对应的参数含义。 方法一:通过命令行获取当前jdk的参数  # 打印jvm所有参数的最终值(可能jdk被人调整,有些值变化了) java -XX:+PrintFlagsFinal -version  #&…

2021/05/15 0条评论 276点热度 0人点赞 阅读全文

这可能是最简短的线程池分析文章了。 顶层设计,定义执行接口 Interface Executor(){ void execute(Runnable command);} ExecutorService,定义控制接口 interface ExecutorService extends Executor{ } 抽象实现ExecutorService中的大部分方法 abstract class AbstractExecutorService implements ExecutorService{ //此处只有提交} Th…

2021/04/29 0条评论 270点热度 0人点赞 阅读全文

先看下Thread的代码结构 public class Thread implements Runnable { //默认线程里存放的为空,维护的是当前线程关联的的ThreadLocal.ThreadLocalMap的值 ThreadLocal.ThreadLocalMap threadLocals = null; //线程退出时 private void exit() { //解除了线程和threadloca的关系 threadLocals = null; }} 再看下ThreadLocal的代码结构 publi…

2021/04/24 0条评论 356点热度 0人点赞 阅读全文

转自:Java高级架构狮  链接:https://www.jianshu.com/p/5c62b71fd882 一. 前提 很早之前就了解到目前主流的APM开源框架如Pinpoint、SkyWalking等等都是通过java.lang.instrument包提供的字节码增强功能来实现的。趁着对这块的热情还没消退,抽时间分析一下java.lang.instrument包的使用方式,记录下来写成一个系列的文章。本系列博文针对的是JDK11,其他版本的JDK可能不适合。 二. instrument简介 java…

2021/04/22 0条评论 319点热度 0人点赞 阅读全文

今天看了下github上发现前几年fork的项目,我这的最后更新时间是2年前,源头还在实时更新,要做一下同步,记录下步骤。 一、克隆自己fork的项目到本地 git clone https://github.com/yxkong/useful-scripts.git 并进入对应的目录 cd useful-scripts# 查看所有d的分支git branch -a* master remotes/origin/HEAD -> origin/master remotes/origin/master remote…

2021/04/21 0条评论 281点热度 0人点赞 阅读全文

13.2 线程安全 13.2.1 java语言中的线程安全 java语言中各种操作共享的数据分为以下五类:不可变、绝对线程安全、相对线程安全、线程兼容和线程对立。 一、不可变 不可变的对象一定是线程安全了(废话,线程的不安全主要体现在增删改,只读没有任何不安全的地方) 如:java中的字符串实例是一个典型的不可变对象,用户调用内部的substring()、replace()这些方法都是返回一个新构造的字符串对象。 二、绝对线程安全 一 个类要达到“不管运行时环境如何,调用者都不需要任何额外的同步措施”可能需要付出非…

2021/04/08 0条评论 280点热度 0人点赞 阅读全文

package com.doraemoney.core.utils; import java.util.Random; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import com.google.common.collect.M…

2017/05/21 0条评论 1076点热度 0人点赞 阅读全文

在处理大批量数据的时候,我习惯性使用Executor,将一批数据按拆分到多个线程上,每个线程保证数据隔离,每个单元都是相互独立的,使用场景:工单处理、用户额度计算。下面,我以求一批数据最大值为例写一个多线程处理. package com.yxkong.demo.executor; import java.util.ArrayList; import java.util.List; import java.util.Random; import java.util.concurrent.Callable; impor…

2017/05/21 0条评论 437点热度 0人点赞 阅读全文

    Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数据计算的性能问题。Fork/Join采用的是分治法,Fork是将一个大任务拆分成若干个子任务,子任务分别去计算,而Join是获取到子任务的计算结果,然后合并,这个是递归的过程。子任务被分配到不同的核上执行时,效率最高。     Fork/Join框架的核心类是ForkJoinPool,它能够接收一个ForkJoinTask,并得到计算结果。ForkJoinTask有两个子类,Recur…

2017/05/21 0条评论 619点热度 0人点赞 阅读全文
1234511