java
文章平均质量分 75
ndrandy
这个作者很懒,什么都没留下…
展开
-
JVM调优实战
所以直接关闭UseAdaptiveSizePolicy,并且通过-XXSurvivorRatio=N把Survivor区域调整到一定的大小(500M-1G,越大的话浪费的内存也相对多一些,不过都10G了,也不在乎那一点内存了),Eden区域比例不可过大,否则minorGC耗时也会上去,也不可过小,太频繁的话,GC过程本身也有一定的耗时,积少成多,吞吐也自然会下降。老年代7G,会发生多次FullGC,说明老年代的内存慢慢上涨,但是不是内存泄漏,因为如果是内存泄漏,FullGC完应该会OOM。.........原创 2022-07-30 08:18:59 · 1596 阅读 · 3 评论 -
java NIO Selector惊群现象研究
序言:本文讨论的问题都是基于JDK8的版本在使用java的NIO实现一个server之前,本人也有接触过c/c++/php的server实现,在“单进程单线程”下,本身是串行的,也无需讨论“惊群问题”,在“多进程单线程” 模式下(以php为例),一般是在主进程中创建好server socket、绑定好端口等操作,然后fork出多个worker进程(每个worker进程都会accept连接),父子进程间因fork有“写时复制机制”的存在,可以共用同一个端口下的server socket,当有客户端连.原创 2022-05-20 12:15:28 · 534 阅读 · 0 评论 -
基于swoole开发高性能restful api服务器的一些思考
关于协程:协程:其实就是用户态的线程,关于swoole协程的切换机制可以参考我的另外一篇文章swoole协程切换机制 swoole从4.x版本开始后,加入了协程的特性,用法上和golang很相似,对于普通写业务的phper来说,基本上和写同步代码没什么区别。很多人都使用协程来写server代码,但是当你认真思考生产实际环境时,你会发现一些问题: # swoole官方提供的数据库协程客户端只有:redis、mysql。当项目中使用了其他的数据库客户端时,堵塞IO就无法h...原创 2021-02-24 10:49:04 · 447 阅读 · 0 评论 -
并发编程在Java和c++中的高度概括
Java: synchronized 用法 volatile 用法 ThreadLocal 用法 Executor 用法 Atomic package用法 主动的使用Lock Future ThreadPoolExecutor 线程池 几个并发集合类型的用法 遵循JVM happens before 原则 重要知识点:因为“cpu缓存” 导致的“伪共享”、编译器执行指令优化导致的重排序(re...原创 2021-01-13 16:22:25 · 237 阅读 · 0 评论