导航菜单
路很长,又很短
博主信息
昵   称:Cocodroid ->关于我
Q     Q:2531075716
博文数:306
阅读量:737458
访问量:68090
至今:
×
分享博文列表:【Java
· Jedis一致性哈希实现
    一致性哈希算法介绍:一致性哈希算法导入Jedis依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><versio ...更多
(49)阅读 2019-06-07

· ThreadPoolExecutor线程池参数设置技巧
    一、ThreadPoolExecutor的重要参数corePoolSize:核心线程数核心线程会一直存活,及时没有任务需要执行当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理设置allowCoreThreadTimeout=true(默认false)时,核心 ...更多
(154)阅读 2019-04-19

· jstack 堆栈日志分析
    一、线程的状态线程间的状态转换:1.新建(new):新创建了一个线程对象。2.可运行(runnable):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的使用权。3.运行(running ...更多
(77)阅读 2019-03-17

· 深入理解jstack日志
    在分析线上问题时常使用到jstack<PID>命令将当时Java应用程序的线程堆栈dump出来。面对jstack日志,我们如何查看?首先要清楚线程的状态线程的状态有:new、runnable、running、waiting、timed_waiting、blocked、 ...更多
(101)阅读 2019-03-17

· 通过jstack日志分析和问题排查
    前段事件公司出现了一个严重故障(调用dubbo服务一直处于超时,整个服务系统发生雪崩,系统彻底访问不了),一开始怎么都找不到问题的根源,日志的表现形式是dubbo线程池用完了,那么具体是什么导致的没有找到,后然通过jstack日志分析才找到问题的根源,根源就是系统日志代码写有问题 ...更多
(182)阅读 2019-03-17

· GC策略的调优
    GC策略在G1还没成熟的情况下,目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种,具体这两种GC的策略在深入JVM章节中已讲解,并行和并发GC的策略通过-XX:+UseParallelGC和-XX:+UseConcMarkSw ...更多
(98)阅读 2019-03-06

· ThreadDump分析笔记: 解读堆栈
    1.概述随着系统日益增大,代码结构日渐复杂,经过验收测试的系统可能在实际生产环境下表现的一塌糊涂,也可能非常棒。因此通过QA并不能保证系统不会发生内存泄漏,往往流量越大泄露的越快,最后导致系统崩溃。比如在某个时间点系统一直出现TimeOut、或者系统突然处理速度急剧下降等问题。对 ...更多
(161)阅读 2019-03-06

· Java内存之本地内存分析神器: NMT 和 pmap
    背景其他团队的一些同事经常问我一个问题:你的Java进程怎么占了那么多VirtualSize和RSS?最近,我基本上可以回答清楚这个问题了。用NMT和pmap基本就就能搞清楚Java进程为什么占了那些VirtualSize和RSS。NMT是NativeMemoryTracking ...更多
(89)阅读 2019-03-04

· Java内存泄漏分析系列之六:JVM Heap Dump(堆
    正如ThreadDump文件记录了当时JVM中线程运行的情况一样,HeapDump记录了JVM中堆内存运行的情况。可以通过以下几种方式生成HeapDump文件:使用jmap命令生成jmap命令是JDK提供的用于生成堆内存信息的工具,可以执行下面的命令生成HeapDump:1jma ...更多
(155)阅读 2019-03-04

· Java的四种代码块
    Java代码块 一.在Java中,使用”{}”括起来的代码称为代码块,代码块可以分为以下四种: 1.普通代码块:就是类中方法的方法体  publicvoidxxx(){      //code  } 2.构造块:用{}裹起来的代码片段,构造块在创建对象时会被调用,每次创建对象时都 ...更多
(417)阅读 2017-10-13

· 彻底理解ThreadLocal
    ThreadLocal是什么  早在JDK1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。  当使用ThreadLocal维护变量时,Thread ...更多
(383)阅读 2017-09-28

· [置顶] 从Java future 到 Guava List
    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/51232004前言     随着移动互联网的蓬勃发展,手机App层出不穷,其业务也随之变得错综复杂。针对于开发人员来说,可能之前的一个业务只 ...更多
(397)阅读 2017-09-25

· 【J2SE】为什么静态内部类的单例可以实现延迟加载
    一、单例  单例是一个常见的设计模式,常见有四种方式来实现,即懒汉式、饿汉式、枚举和静态内部类实现,这个模式的本质是为了控制内存中某个类的实例数量。  懒汉式采用懒加载,时间换空间,因此需要注意获取实例时的并发安全问题,即便正确并发,每次获取实例的时候还是要浪费一次判断;饿汉式空 ...更多
(358)阅读 2017-09-24

· 深入Java 1.5枚举类型的内部实现原理
    Java是一种面向对象的高级编程语言。它的出众之处就在于它的简洁。一个程序员所要做的就是创建类(CreateClass)以及定义接口(DefineInterface),如此而已。当然,这种简洁和优美是有代价的,比如失去了Enum这种广泛使用的数据类型就是一个不小的损失。在Java ...更多
(325)阅读 2017-09-23

· 35 个 Java 代码性能优化总结
    代码优化,一个很重要的课题。可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了。代码优化也是一样,如果项目着眼于尽快无BUG ...更多
(364)阅读 2017-09-21

· 源码阅读之CyclicBarrier
    源码阅读是基于JDK7,本篇主要涉及CyclicBarrier常用方法源码分析。1.概述CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到所有线程都到达某个公共屏障点(也可以叫同步点),即相互等待的线程都完成调用await方法,所有被屏障拦截的线程才会继续运 ...更多
(358)阅读 2017-09-20

· Java HashMap中在resize()时候的rehas
    HashMap的扩容机制---resize()虽然在hashmap的原理里面有这段,但是这个单独拿出来讲rehash或者resize()也是极好的。什么时候扩容:当向容器添加元素的时候,会判断当前容器的元素个数,如果大于等于阈值(知道这个阈字怎么念吗?不念fa值,念yu值四声)- ...更多
(456)阅读 2017-09-16

· 谈谈ThreadLocal的设计及不足
    用Java语言开发的同学对ThreadLocal应该都不会陌生,这个类的使用场景很多,特别是在一些框架中经常用到,比如数据库事务操作,还有MVC框架中数据跨层传递。这里我们简要探讨下ThreadLocal的内部实现及可能存在的问题。首先问自己一个问题,让自己实现一个这个的功能类的 ...更多
(363)阅读 2017-09-15

· 深入分析 ThreadLocal 内存泄漏问题
    ThreadLocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。但是如果滥用ThreadLocal,就可能会导致内存泄漏。下面,我们将围绕三个方面来分析ThreadLocal内存泄漏的问题 ...更多
(375)阅读 2017-09-14

· Java多线程系列--“JUC锁”11之 Semaphore
    Semaphore简介Semaphore是一个计数信号量,它的本质是一个"共享锁"。信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。线程可以通过release( ...更多
(348)阅读 2017-09-14