班级作业#博客作业#
weixin_45745355
这个作者很懒,什么都没留下…
展开
-
NIO浅析(1)
NIO浅析1、为什么使用NIO?一句话:都是阻塞惹的祸BIO服务端存在请求阻塞阻塞,不能同时处理多个客户端的连接请求。有人提出在服务端accept后,创建线程去处理请求。这种方式有不足:互联网高并发场景下,过多的线程会导致OS的频繁切换,大大影响性能,即使使用线程池创建线程。以上用线程池会产生请求时间长,拒绝服务,但是服务器资源可能并未高效率使用。...原创 2019-11-07 21:14:42 · 141 阅读 · 0 评论 -
JAVA内存模型之可见性
volatile并不是禁止JVM对所有的指令进行重排,只是对影响读数据的情况才会进行指令重排语义是: can not be cached原创 2019-10-18 16:21:50 · 132 阅读 · 0 评论 -
线程通信学习小结
线程通信浅析java支持多线程执行,线程之间需要进行数据交互,消息传输,必然会存在线程间的通信。例如:线程自旋,线程等待,锁,线程唤醒等。下面介绍几种线程通信api说明1、suspend/resume组合此组合以及被jdk废弃掉。原因:此通信api很容易导致线程通信的死锁。死锁示例共两个代表示例:a) 两个线程同时使用同一个对象锁,相互持有锁时,就会出现死锁情况。b) 执行resu...原创 2019-10-17 20:21:59 · 178 阅读 · 0 评论 -
JAVA运行堆栈分析
JAVA运行堆栈分析1、jvm运行数据区a、线程栈区域是线程 独占区域,随着线程的生命周期结束而销毁b、方法区+堆区域是线程共享区域,随着虚拟机或者GC而销毁c、堆区是GC的区域。对象实例引用(指针)是放在虚拟机栈,栈默认最大值为1M...原创 2019-10-17 17:23:37 · 128 阅读 · 0 评论 -
JAVA常用命令工具小结
JDK内置工具1、javap反编译工具,主要根据字节码反编译为 java源代码。主要使用:javap -v 查看方法定义,输出附加信息等2、jps查看java进程,pid编号3、jstat监视JAVA虚拟机统计信息,主要用于JVM性能 优化4、jcmd可以替代jps查看本地java进程列表5、jmap打印java内存中Object 对象的情况或将vm中堆信息,以二进制的形...原创 2019-10-15 14:01:30 · 227 阅读 · 0 评论 -
JAVA中内存爆炸浅析
JVM内存1、-xms:内存占用预热过程jvm所占有的操作系统内存最小设置参数。并不是JVM启动时直接划分内存到值的设置,内存达到最小值是有预热过程,除非程序使用内存太大,等于或者超过设置最小内存,否则是JVM逐步加载至此值。语义当JVM发生GC时,保留JVM使用最小内存的值。JVM直接申请至最小内存设置通过设置:-xx:+AlwaysPretouch,JVM启动时直接申请内存...原创 2019-10-15 09:03:11 · 651 阅读 · 0 评论 -
类加载器学习小结
类加载器学习小结本篇博客会介绍类加载器的类型、类是否会被重复加载、双亲委派模型、类中静态代码块及静态方法何时被加载1、类加载器类型顶级加载器---------BootstrapClassLoader此类加载器会加载C:\Program Files (x86)\Java\jre1.8.0_131\lib/ 目录下面的.jar包。比如:rt.jar等扩展类加载器------ExtClassL...原创 2019-10-14 09:30:10 · 76 阅读 · 0 评论 -
多线程编程之线程池使用
多线程编程之JAVA线程池多种使用方式1、基于无界队列如果corePoolSize == maxmumPoolSize时,等同于使用工具类实现Executors.newFixedThreadPool(corePoolSize )code 如下:优点:队列无限大,任务可以不断写入缺点:任务不易控制备注:若执行任务未达到核心线程池数量,线程池则会建立新的线程执行;若执行任务数量达到核心...原创 2019-10-13 17:29:06 · 154 阅读 · 0 评论