java
~花卷~
这个作者很懒,什么都没留下…
展开
-
java-nio代码模拟
server:package com.io;import com.mysql.fabric.Server;import java.net.InetSocketAddress;import java.nio.channels.SelectionKey;import java.nio.channels.Selector;import java.nio.channels.ServerSo...原创 2020-03-29 16:53:31 · 222 阅读 · 0 评论 -
java-IO
1、 java IO读写的底层流程用户程序进行IO的读写,基本上会用到系统调用read&write,read把数据从内核缓冲区复制到进程缓冲区,write把数据从进程缓冲区复制到内核缓冲区,它们不等价于数据在内核缓冲区和磁盘之间的交换。首先看看一个典型Java 服务端处理网络请求的典型过程:(1)客户端请求Linux通过网卡,读取客户断的请求数据,将数据读取到内核缓冲区。(2)...转载 2020-03-29 16:51:14 · 191 阅读 · 0 评论 -
JVM-内存溢出排查
背景:线上环境项目出现OMM,系统只能重启使用日志:java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOf(Arrays.java:3236) at java.io.ByteArrayOutputStream.grow(ByteArrayOutputStream.java:11...原创 2020-03-21 09:36:26 · 791 阅读 · 0 评论 -
线程池
线程池1、为什么要用线程池。在多线程的情况下,系统频繁开启关闭线程会造成大量的资源浪费,成本很高,同时有导致系统崩溃的风险。 线程池理解为一个池子里面有一堆线程,用的时候拿一个,用完放回去。这样就避免了不断地开启关闭。。2、线程池分类。总共有四种比较常见的线程池 newCachedThreadPool ,newFixedThreadPool,newScheduledThreadPool,n...原创 2020-03-12 19:38:34 · 102 阅读 · 0 评论 -
jstat命令
jstat命令查看jvm的GC情况 (以Linux为例) jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] 注意!!!:使用的jdk版本是jdk8. 类加载统计: Loaded:加载cla...转载 2020-03-06 15:30:08 · 142 阅读 · 0 评论 -
JVM学习(二)
1、FullGC什么是fullgc:fullgc就是指清理堆中的young和old区。一般程序健康情况会只做YoungGC。fullgc情况会导致除了gc线程外的线程停止工作,代码静止,系统会大幅变慢。触发机制:1、system.gc()的调用,此方法的调用是建议JVM进行Full GC,虽然只是建议而非一定,但很多情况下它会触发 Full GC,从而增加Full GC的频率,也即增加了间...原创 2020-03-07 11:43:37 · 1881 阅读 · 0 评论 -
JVM学习(一)
文章内容:一、JVM之堆区堆(Heap):是内存中最大的一块区域,程序中所有的对象实例都是存在这个地方。比如一个数组 int[] arr = {1,2,3,4…},该数组对象arr的值都是存在该区域。堆分为:新生代(其中有分为1个伊甸区,2个幸存区),老年代。虚拟机中默认分配比例:uintx InitialSurvivorRatio= 8uintx NewRatio= 2yo...原创 2020-03-05 23:41:34 · 136 阅读 · 0 评论