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 · 271 阅读 · 0 评论 -
java-IO
1、 java IO读写的底层流程 用户程序进行IO的读写,基本上会用到系统调用read&write,read把数据从内核缓冲区复制到进程缓冲区,write把数据从进程缓冲区复制到内核缓冲区,它们不等价于数据在内核缓冲区和磁盘之间的交换。 首先看看一个典型Java 服务端处理网络请求的典型过程: (1)客户端请求 Linux通过网卡,读取客户断的请求数据,将数据读取到内核缓冲区。 (2)...转载 2020-03-29 16:51:14 · 257 阅读 · 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 · 906 阅读 · 0 评论 -
线程池
线程池 1、为什么要用线程池。 在多线程的情况下,系统频繁开启关闭线程会造成大量的资源浪费,成本很高,同时有导致系统崩溃的风险。 线程池理解为一个池子里面有一堆线程,用的时候拿一个,用完放回去。这样就避免了不断地开启关闭。。 2、线程池分类。 总共有四种比较常见的线程池 newCachedThreadPool ,newFixedThreadPool,newScheduledThreadPool,n...原创 2020-03-12 19:38:34 · 151 阅读 · 0 评论 -
jstat命令
jstat命令查看jvm的GC情况 (以Linux为例) jstat命令可以查看堆内存各部分的使用量,以及加载类的数量。命令的格式如下: jstat [-命令选项] [vmid] [间隔时间/毫秒] [查询次数] 注意!!!:使用的jdk版本是jdk8. 类加载统计: Loaded:加载cla...转载 2020-03-06 15:30:08 · 198 阅读 · 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 · 2215 阅读 · 0 评论 -
JVM学习(一)
文章内容: 一、JVM之堆区 堆(Heap):是内存中最大的一块区域,程序中所有的对象实例都是存在这个地方。 比如一个数组 int[] arr = {1,2,3,4…},该数组对象arr的值都是存在该区域。 堆分为:新生代(其中有分为1个伊甸区,2个幸存区),老年代。 虚拟机中默认分配比例: uintx InitialSurvivorRatio= 8 uintx NewRatio= 2 yo...原创 2020-03-05 23:41:34 · 180 阅读 · 0 评论
分享