java基础
miaoyibosysu
这个作者很懒,什么都没留下…
展开
-
【随想】主板上的信息流通
从硬件上讲,CPU和主板上其他设备的通信分为两种:一种是和内存的通信;另一种是和内存以外的设备通信。CPU和内存的通信依靠三大总线:控制总线、数据总线和地址总线:通过地址总线发送需要操作的内存地址通过控制总线发送控制信号(读或者写)通过数据总线传输数据。地址总线一次发送一个地址,对应一个字节的地址(按字节编址);控制总线可以通知内存是只传输当前这个字节的地址,还是这个地址相邻的后续几个字节;如果数据总线有64根,那内存就可以一次最多返回8个字节。CPU和内存以外的设备通信也要依靠原创 2022-05-25 16:33:24 · 548 阅读 · 0 评论 -
一次内存溢出问题分析
文章目录问题描述问题分析1、查看jvm使用情况2、生成dump文件3、利用HeapAnalyzer软件进行分析4、使用eclipse插件分析5、在linux执行分析命令6、分析结果7、问题解决问题描述打开页面,页面卡死,后台报out of memory错误。问题分析1、查看jvm使用情况命令:jmap -heam [pid]发现堆内存的使用率已经达到了100%,总大小8g左右,并且一直不见下降。2、生成dump文件命令:jmap -dump:file=[] [pid]最后生成的文件有7g大原创 2020-07-04 14:46:04 · 642 阅读 · 0 评论 -
this关键字和class文件
存在继承关系的情况下,实例化子类时,父类中调用的this指向的是子类对象;或者说实例化的谁,this指向的就是谁。从编译后的class文件看不出jvm是如何加载类的以及各个成员的加载顺序,但有助于了解方法内部的执行顺序和原理。例如:1、新建parent类public class Parent { protected String a="a"; static String p="...原创 2019-05-13 12:21:11 · 246 阅读 · 0 评论 -
HashMap源码解析(一)
本文以jdk1.8为例分析HashMap,不再考虑和以前版本的比较。1、成员变量 /** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16HashMap的原创 2019-01-28 15:03:33 · 126 阅读 · 0 评论 -
LinkedBlockingQueue源码分析(一)
简介:LinkedBlockingQueue是一个基于链表结构的阻塞队列;队列元素遵循先进先出的原则(FIFO);新成员被添加到队列的尾部。链表队列比起数组队列(例如ArrayBlockingQueue)来说,一般具有更高的吞吐量,但其性能在大多数并发应用程序中,比较难预测(less predictable performance in most concurrent application...原创 2019-01-10 11:36:34 · 134 阅读 · 0 评论 -
ThreadPoolExecutor中ctl变量的理解
ThreadPoolExecutor中有个int型变量(其实是AtomicInteger类型)ctl它的作用是存储线程池的状态和工作线程数量,原理是如何实现的呢:第一个问题是一个变量如何存储两个数据:首先,我们知道,int类型是4个字节,也就是32位,例如一个int值在计算机中的表示:00000000 01000100 11111111 00000000因为ThreadPoolExecu...原创 2018-12-26 10:50:26 · 2305 阅读 · 0 评论 -
HeapAnalyzer一般用法
官方指导文档:https://www.ibm.com/developerworks/community/wikis/home?lang=en#!/wiki/W3b463571efc8_4f02_99af_3cbc0da42ddc/page/IBM HeapAnalyzer Information注1:因为是全英文的,网上很多直译过来的文章让人看的莫名其妙,英语一般的,开个有道,大概浏览一下就可以...原创 2019-05-23 17:28:54 · 7764 阅读 · 2 评论