1.1 转红黑树条件:
a.数组长度大于等于64(默认16,要经过2次扩容--当达到16*默认扩容因子0.75=12就扩容)
b.链表长度大于8
1.2 hashmap先计算hash值,再用hash值计算下标。
1.1 sleep是线程方法,await是object方法
1.2 sleep不会释放锁,而await会
1.3 sleep不依赖于同步器synchronize,而await要
1.4 sleep不需要被唤醒,而await要
1.1 前者线程安全,而后者不是
1.2 前者不可以把null作为key,而后者可以,并放在第一个节点上
1.3 两者扩容因子默认都是0.75;前者初始容量为11,扩容是当前容量2+1;后者初始容量是16,扩容是当前容量2
前者cookie:
存放在客户端浏览器中;
大小受限制,单个不超过4K,一般1个站点最多保存20个;
String类型;
不太安全(可以加密)
后者sessiono:
存放在服务器中;
大小一般不受限制;
Key-Value(Object类型);
安全性更高;
1.1 多对一:不需要切换,线程创建、调度、同步非常快;但是如果其中一个用户线程阻塞会造成其他线程无法执行,且无法像内核线程一样实现较完整的调度、优先级;
1.2 一对一:java的jvm几乎把所有对线程的操作都交给了系统内核操作,线程真正启动顺序不一定是按我们启动的顺序,会引起用户态和内核态的频繁切换;如果系统出现大量线程,回家降低系统性能。
1.1 栈溢出
1.2 堆溢出
》
》第8行设置会在堆溢出会导出Damping日志
1.3 方法区溢出
1.4 本机直接内存溢出
1.1 不使用的内存,却没有被释放;
1.2 每一次请求进来或者每一次操作处理都分配了内存,却有部分不能回收(或未释放),随着请求越来越多,内存泄漏就会越来越严重,必然造成内存溢出。
1.3 内存泄漏一般是资源管理问题或者程序bug,内存溢出则是内存空间不足和内存泄漏的最终结果。
1.空间整合:哪块垃圾最多优先清理
2.多线程+并发+可预测停顿
安全点:方法调用、循环跳转、异常跳转;设置标志位,并不断轮询,主动停止。
先通过top命令找到cpu使用率高的线程;top -p 进程号;该界面输入H查找最高cpu的线程;执行jstack 进程号做dump输出线程信息; 同时根据线程的16进制找到对应的堆信息,然后再找出对应的代码
6、最后根据线程信息定位到具体代码
Nosql,C编写,包含多种数据结构(字符串、列表、集合、散列表、有序集合),支持网络,基于内存还能持久化性能高效每秒可以处理超过10万次读写操作,遵守BSD协议,支持分布式易拓展、支持多种语言的k-v存储数据库。
随心所往,看见未来。Follow your heart,see night!
欢迎点赞、关注、留言,一起学习、交流!
转载自: https://www.cnblogs.com/folyh/p/16513466.html