- 博客(25)
- 收藏
- 关注
原创 SingleDemo
package com.sinoservices.chainwork.srm.basicdata.service.impl;public class SingleDemo {public static SingleDemo instance = null;public SingleDemo(){System.out.println(Thread.currentThread().getNam...
2019-12-12 09:07:33
119
原创 MyThreadPoolDemo线程池代码实例
package com.sinoservices.chainwork.srm.basicdata.service.impl;import java.util.concurrent.Executor;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.uti...
2019-12-07 09:44:42
188
原创 volatile禁止指令重拍案例演示
package com.sinoservices.chainwork.srm.basicdata.manager.impl;public class ReSortSeqDemo {int a = 0;boolean flag = false;public void method1(){a = 1;flag = true;}public void method2(){a = a+5...
2019-12-05 09:12:50
171
原创 MatespaceOOMTest
package com.sinoservices.chainwork.srm.basicdata.manager.impl;/*JVM 参数-XX:MatespaceSize=8m -XX:MaxMatespaceSize=8mjava 8及以后的版本用Matespace来替代永久代Matespace是方法区在HotSpot中的实现。它与持久代最大的区别在于:Matespace并不在虚拟...
2019-12-04 20:34:28
188
原创 使用线程池有什么好处
线程池做的工作主要是控制运行线程的数量,处理过程中将任务放入队列,然后线程创建后启动这些任务,如果线程数量超过了最大线程数量,超出数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行。他的特点是:线程复用,控制最大并发数,管理线程第一:降低资源消耗,通过重复利用已创建的线程,降低线程创建和销毁造成的资源消耗。第二:提交响应速度,当任务到达时,任务可以不需要等待线程创建就能执行。...
2019-12-04 20:10:00
2190
原创 UnableCreateNewThreadDemo
package com.sinoservices.chainwork.srm.tender.manager.impl;/*高并发请求服务器时,经常出现如下异常:java.lang.OutOfMemoryError:unable to create new native thread准确地讲:native thread异常与平台有关导致原因1、你的应用创建了太多线程,一个应用进程创建多个线...
2019-12-03 08:59:06
266
原创 DirectBufferMemoryDemo
package test1;/*配置参数-Xms10m -Xmx10m -XX:+PrintGCDetial -XX:MaxDirctMemorySize=5m故障现象:Exception in Thread main:java.lang.OutOfMemoryError:Direct Buffer Memoru导致原因写NIO程序经常使用ByteBuffer来读取或者写入数据,这是...
2019-11-29 23:11:20
227
原创 MateSpace
云空间的本质和永久代类似,都是对JVM规范中方法区的实现,不过元空间和永久代之间最大的区别在于,元空间并不在虚拟机中,而是使用本地内存。因此默认情况下,元空间的大小仅受本地内存的控制...
2019-11-29 23:10:47
412
原创 ProAndConBlockingQueueDemo
package com.sinoservices.chainwork.srm.basicdata.service.impl;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.BlockingQueue;import java.util.concurrent.TimeUnit;import j...
2019-11-29 17:31:45
121
原创 VolatileNotAtomicDemo
package test1;/*1.验证volatile的可见性1.1 假如int number = 0 ,number变量之前根本没有添加volatile关键字修饰,没有可见性1.2 添加了volatile 可以解决可见性问题2.验证volatile不保证原子性2.1 原子性指的是什么意思?不可分割,完整性,也即某个线程正在做某个业务时,中间不可以被加塞或者被分割。需要整体完整,要...
2019-11-27 22:51:33
98
原创 可见性问题
通过前面对JMM的介绍,我们知道各个线程对主内存中共享变量的操作,都是各个线程各自拷贝到自己的工作内存进行操作后再写回到主内存。这就可能存在一个线程AAA修改了共享变量X的值,但还没写回主内存时,另外一个线程又对主内存中同一个共享变量X进行操作,但此时A线程中共享变量X的值对B线程来说并不可见,这种工作内存与主内存同步延迟的现象就造成了可见性问题...
2019-11-27 22:50:52
337
原创 GcOverHeadLimitDemo
package test1;/*JVM参数配置演示-Xms10m -Xmx10m -XX:+PrintGCDetials -XX:+MaxDirectMemorySize=5mGC回收时间过长时,会抛出OutOfMemoryError,过长的定义是:超过了98%的时间用来做GC并且回收了不到2%的堆内存连续多次GC回收了不到2%的堆内存的极端情况下才会抛出。假如不抛出GC OverHea...
2019-11-27 22:06:54
121
原创 java.lang.OutOfMemoryError:GC OverHead limit exceeded
JVM配置参数演示-Xms10m -Xmx10m -XX:MaxDirectMemorySize=5mGC 回收过长时,会抛出OutOfMemoryError.过长的定义是,超过98%的时间用来做GC并且回收了不到2%的堆内存连续多次GC,都回收了不到2%的堆内存的极端情况下才会抛出。假如不抛出GC overhead limit错误会发生什么情况呢?那就是GC清理的这么点内存很快就会再次被...
2019-11-27 22:06:21
170
原创 SynchronizedAndReentranLockDemo
package test1;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;class Resource{int number = 1;//A 1 B 2 C 3privat...
2019-11-27 21:24:56
96
原创 VolatileDemo
package com.sinoservices.chainwork.srm.tender.service.impl;import java.util.concurrent.TimeUnit;class Mydata{volatile int number = 0;public void addTo60() {this.number = 60;}}public class Vola...
2019-11-27 10:32:13
104
原创 JavaHeapSpaceDemo1
package com.sinoservices.chainwork.srm.tender.service.impl;import java.util.Random;public class JavaHeapSpaceDemo1 {public static void main(String[] args) {Byte [] bytes = new Byte[80 * 1024 * 204...
2019-11-27 10:20:13
93
原创 JavaHeapSpaceDemo1
package com.sinoservices.chainwork.srm.tender.service.impl;import java.util.Random;public class JavaHeapSpaceDemo {public static void main(String[] args) {String str = “str”;while (true) {str +=...
2019-11-27 10:18:20
104
原创 StackOverFlowErrorDemo
package com.sinoservices.chainwork.srm.tender.service.impl;public class StackOverFlowErrorDemo {public static void main(String[] args) {while (true) {stackOverFlow();}}private static void stack...
2019-11-27 10:11:53
120
原创 Synchronized 和lock有什么区别,用新的lock有什么好处,你举例说说?
1.原始构成Synchronized是关键字属于JVM层面monitorenter(底层是通过monitor对象来完成,其实wait和notify等方法也依赖于monitor对象完成,只有在同步块或方法中,才能调用wait和notify)monitorexistlock是具体类(java.lang.concurrent.Lock.lock)是api层面的类2.使用方法Synchroni...
2019-11-26 22:59:31
98
原创 JMM你谈谈
JMM(java内存模型,java memory model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或者规范,通过这组规范定义了程序中的各个变量(包括实例字段、静态字段、和构成数组对象的元素)的访问方式JMM关于同步的规定1.线程解锁前:必须把共享变量的值刷回主内存2.线程加锁前:必须读取主内存最新值到自己的工作内存3.加锁解锁是同一把锁由于JVM运行程序的实体...
2019-11-26 22:04:09
152
原创 阻塞队列用在哪?
1.生产者消费者模式传统版 ProdConsumer_TradtionDemo阻塞队列版 ProdConsumer_BlockQueueDemo2.线程池3.消息中间件
2019-11-26 21:48:43
180
原创 02.volatile是什么?
1.请你谈谈你对volatile的理解volatile是java虚拟机提供的轻量级的同步机制1.1保证可见性1.2不保证原子性1.3禁止指令重排
2019-11-25 22:22:01
64
原创 81.请谈谈你对OOM的认识
java.lang.StackOverFlowError栈溢出java.lang.OutOfMemoryError: java heap spacejava.lang.OutOfMemoryError: Gc overhead limit exceededjava.lang.OutOfMemoryError: Direct buffer memoryjava.lang.OutOfMemo...
2019-11-25 21:58:29
236
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人