摘要: SynchronizedMap 一次性锁住整张表来保证线程安全,所以每次只能有一个线程来访问map。 synchronizedMap实现了Map接口。 构造synchronizedMap时将this指针传递给监视器对象mutex,即同步方法块锁住的是synchronizedMap对象自身,并将方法代 阅读全文
posted @ 2019-04-07 17:57 小艺是个拖油瓶 阅读(2463) 评论(0) 推荐(0) 编辑
摘要: 什么是内存屏障? 内存屏障,又称为内存栅栏,是一组处理器指令,用于实现对内存操作的顺序限制。 内存屏障为何重要? 对主存的一次访问一般花费硬件的数百次时钟周期。处理器通过缓存能够从数量级上降低内存延迟的成本,这些缓存为了性能重新排列待定内存操作的顺序。 也就是说,程序的读写操作不一定会按照它要求处理 阅读全文
posted @ 2019-04-07 17:51 小艺是个拖油瓶 阅读(173) 评论(0) 推荐(0) 编辑
摘要: TCP与UDP基本区别 1.基于连接与无连接 2.TCP要求系统资源较多,UDP较少; 3.UDP程序结构较简单 4.流模式(TCP)与数据报模式(UDP); 5.TCP保证数据正确性,UDP可能丢包 6.TCP保证数据顺序,UDP不保证 UDP应用场景: 1.面向数据报方式 2.网络数据大多为短消 阅读全文
posted @ 2019-04-07 17:35 小艺是个拖油瓶 阅读(122) 评论(0) 推荐(0) 编辑
摘要: java.util.concurrent.locks.AbstractQueuedSynchronizer 抽象类,简称 AQS ,是一个用于构建锁和同步容器的同步器。事实上concurrent 包内许多类都是基于 AQS 构建。例如 ReentrantLock,Semaphore,CountDow 阅读全文
posted @ 2019-04-07 16:55 小艺是个拖油瓶 阅读(173) 评论(0) 推荐(0) 编辑
摘要: Java 自带 JConsole :Java 监视与管理控制台 Java Monitoring and Management Console 是从 Java5 开始,在 JDK 中自带的 Java 监控和管理控制台,用于对 JVM 中内存,线程和类等的监控。 VisualVM :多合一故障处理工具 阅读全文
posted @ 2019-04-07 16:08 小艺是个拖油瓶 阅读(233) 评论(0) 推荐(0) 编辑
摘要: jps :虚拟机进程状况工具 JVM Process Status Tool ,显示指定系统内所有的HotSpot虚拟机进程。 jstat :虚拟机统计信息监控工具 JVM statistics Monitoring ,是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃 阅读全文
posted @ 2019-04-07 16:07 小艺是个拖油瓶 阅读(153) 评论(0) 推荐(0) 编辑
摘要: CMS Concurrent Mark-Sweep 老年代 标记清除算法 牺牲吞吐量为代价获得最短回收停顿时间的垃圾回收器。 适用于要求服务器响应速度的应用上。 CMS过程 初始标记(STW initial mark) ***暂停应用 并发标记(Concurrent marking) 并发预清理(C 阅读全文
posted @ 2019-04-07 16:06 小艺是个拖油瓶 阅读(743) 评论(0) 推荐(0) 编辑
摘要: CMS 并发标记清除。。 主要步骤是 初始收集-并发标记-重新标记-并发清除-重置 G1 主要步骤: 初始标记-并发标记-重新标记-复制清除 CMS的缺点是对CPU的要求比较高。 G1的缺点是将内存化成了多块,所以对内存段的大小有很大的要求。 CMS是清除,所以会有很多的内存碎片。 G1是整理,所以 阅读全文
posted @ 2019-04-07 15:57 小艺是个拖油瓶 阅读(2522) 评论(0) 推荐(0) 编辑
摘要: 新生代收集器 serial收集器 ParNew收集器--是Serial收集器的多线程版本 Parallel Scaverge收集器 老年代收集器 Serial Old收集器--是Serial收集器的老年代版本 Parallel Old--是Parallel Scavenge收集器的老年代版本 CMS 阅读全文
posted @ 2019-04-07 15:51 小艺是个拖油瓶 阅读(1299) 评论(0) 推荐(0) 编辑
摘要: 四种算法: 1、标记-清除 2、标记-整理 3、复制 4、分代收集 1)标记-清除算法 标记-清除(Mark-Sweep)算法,是现代垃圾回收算法的思想基础。 标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。 一种可行的实现是,在标记阶段,首先通过根节点,标记所有从根节点开始的可达对象。因 阅读全文
posted @ 2019-04-07 15:48 小艺是个拖油瓶 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 1、栈内存用来存放基本类型的变了和引用变量,堆内存用来存储java中的对象,无论是成员变量,局部变量,还是类变量,他们指向的对象都存储在堆内存中。 2、栈内存归属于单个线程,每个线程都会有一个栈内存,其存储的变量只能在其所属的线程中可见,即栈内存可以理解成线程的私有内存;堆内存中的对象对所有线程可见 阅读全文
posted @ 2019-04-07 15:27 小艺是个拖油瓶 阅读(1244) 评论(0) 推荐(1) 编辑
摘要: 1、现实使用中易出问题。 由于永久代内存经常不够用或者发生内存泄露,爆出异常 java.lang.OutOfMemoryError: PermGen 。 字符串存在永久代中,容易出现性能问题和内存溢出。 类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大 阅读全文
posted @ 2019-04-07 15:19 小艺是个拖油瓶 阅读(1619) 评论(0) 推荐(1) 编辑
摘要: JVM内存 一。程序计数器 java线程私有的,类似于操作系统里的PC计数器,可以看做是当前线程所执行的字节码的行号指示器。 如果线程正在执行的是一个java方法,这个计数器记录的正在执行的虚拟机字节码指令的地址。 如果正在执行的是native方法,这个计数器值则为空。 undefined 此内存区 阅读全文
posted @ 2019-04-07 14:54 小艺是个拖油瓶 阅读(465) 评论(0) 推荐(0) 编辑