美文网首页
java相关

java相关

作者: xiaoxf | 来源:发表于2019-07-12 23:31 被阅读0次

    gitlab启动 / 关闭 / 重启命令:gitlab-ctl start / stop / restart

    多线程问题

    * 多个线程调用同一个类的同一静态方法,或者调用同一对象的同一方法,在方法中没有引用外部变量时,不会有多线程问题。

    java进程cpu占用过高问题排查

    1. top(显示进程所有进程,找出占用cpu高的java进程)

    2. ps -mp pid -o THREAD,tid,time (找出进程下占用cpu高的线程)

    3. printf "%x\n" tid (将线程id转成16进制)

    4. jstack pid |grep tid -A 30 (打印线程的堆栈信息)

    查看java进程启动参数命令

    1. jcmd pid VM.flags

    2. jinfo -flags pid

    jvm常用启动参数

    java -jar -Xms2g -Xmx2g -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -Xloggc:./logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=3 -XX:GCLogFileSize=512k example-0.0.1-SNAPSHOT.jar

    线上服务器问题排查

    https://fredal.xin/java-error-check 

    java进程没了,可能因为系统内存不够被linux杀掉。cat /var/log/message |grep 'Out of memory'

    线程池执行任务逻辑和线程池参数关系

    corePoolSize:核心线程数量

    maximumPoolSize:线程池最大数量

    keepAliveTime:空间线程存活时间

    workQueue:线程池缓冲队列

    threadFactory:线程池创建线程使用的工厂

    handler:线程池对拒绝任务的处理策略

    线程池执行任务逻辑

    单个controller请求数及响应时间参考(controller逻辑很简单,直接返回字符串):

    请求数        请求耗时       平均单次请求耗时(s)

    10000            2.91                 0.000291

    100000          17.9                 0.000179

    1000000        175.72             0.000175

    java锁

    锁的存储:存储在对象头信息里

    锁的类型:

    偏向锁:不存在锁竞争时采用,默认关闭。

    轻量级锁:不存在锁竞争时采用的锁。

    重量级锁:存在锁竞争采用。

    解决hash冲突方法

    hash冲突:多个不同的key通过hash函数运算之后落到同一个数组下标

    假设下标为i

    1. 线性探索(开放寻址法)。若下标i有数据,则判断i+1是否有数据,无数据将数据存入i+1,否则判断i+2 .... eg: ThreadLocal

    2. 链式地址法。下标冲突的地方采用链表结构存储数据。eg: HashMap

    3. 再hash(通过多个hash函数运算)eg: 布隆过滤器(底层采用bitMap实现)

    4. 建立公共溢出区(把hash表分为基本表和溢出表,发生冲突的数据存入溢出表中)

    相关文章

      网友评论

          本文标题:java相关

          本文链接:https://www.haomeiwen.com/subject/nxvukctx.html