Wesley13 Wesley13
3年前
volatile 手摸手带你解析
!(https://oscimg.oschina.net/oscnet/updd725cad8a8b1bffe9ae4c3393eccddac22.JPEG)前言volatile是Java里的一个重要的指令,它是由Java虚拟机里提供的一个轻量级的同步机制。一个共享变量声明为volatile后,特别是在多线程操作时,正确使用
Wesley13 Wesley13
3年前
Java中的ThreadLocal功能演示
除了使用synchronized同步符号外,Java中的ThreadLocal是另一种实现线程安全的方法。在进行性能测试用例的编写过程中,比较简单的办法就是直接使用synchronized关键字,修饰对象、方法以及类。但是使用synchronized同步,这可能会影响应用程序的可伸缩性以及运行效率。但是如果要在多个
Wesley13 Wesley13
3年前
JEP解读与尝鲜系列2
本文基于OpenJDK8~14的版本JEP142内容用于将某个或者某些需要多线程读取和修改的field进行缓存行填充。同时由于Java8之前对于缓存行填充的方式,比较繁琐且不够优雅,还有可能缓存行大小不一的问题,所以这个JEP中引入了@Contended注解。什么是缓存行填充以及Fa
Stella981 Stella981
3年前
JVM中的Stack和Frame
JVM执行Java程序时需要装载各种数据,比如类型信息(Class)、类型实例(Instance)、常量数据(Constant)、本地变量等。不同的数据存放在不同的内存区中,这些数据内存区称作“运行时数据区(RuntimeDataArea)”。运行时数据区有这样几个重要区:JVMStack(简称Stack或者虚拟机栈、线程栈、栈等),Frame(又称S
Stella981 Stella981
3年前
JVM回收器与调优
定义:使用编程语言将GC算法实现出来,产生的程序就是垃圾搜集器了JVM给了三种选择:串行收集器、并行收集器、并发收集器串行搜集器(serialcollector):它只有一条GC线程,且就像前面说的,它在运行的时候需要暂停用户程序(stoptheworld)。并行搜集器(parallelcollector):它有多
Easter79 Easter79
3年前
Tomcat和JVM的性能调优总结
<divclass"cmarkdownJarticleContent"<pTomcat性能调优:</p<p找到Tomcat根目录下的conf目录,修改server.xml文件的内容。对于这部分的调优,我所了解到的就是无非设置一下Tomcat服务器的最大并发数和Tomcat初始化时创建的线程数的设置,当然还有其他一些性能调优的设置,下图是我根
Stella981 Stella981
3年前
Spring Boot 2 (七):Spring Boot 如何解决项目启动时初始化资源
在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等。今天就给大家介绍一个SpringBoot神器,专门帮助大家解决项目启动初始化资源操作。这个神器就是 CommandLineRunner,CommandLineRunner 接口的 Component 会在所有 Sprin
京东云开发者 京东云开发者
9个月前
【转载】golang内存分配
Go的分配采用了类似tcmalloc的结构.特点:使用一小块一小块的连续内存页,进行分配某个范围大小的内存需求.比如某个连续8KB专门用于分配1724字节,以此减少内存碎片.线程拥有一定的cache,可用于无锁分配.同时Go对于GC后回收的内存页,并不是马
京东云开发者 京东云开发者
2个月前
【转载】golang内存分配
作者:钱文Go的分配采用了类似tcmalloc的结构.特点:使用一小块一小块的连续内存页,进行分配某个范围大小的内存需求.比如某个连续8KB专门用于分配1724字节,以此减少内存碎片.线程拥有一定的cache,可用于无锁分配.同时Go对于GC后回收的内存页