方法区:用于存放已被虚拟机加载的类信息、常量、静态变量、编译器编译后的代码等数据。 当方法区无法满足内存分配需求时,会抛出OutOfMemoryError异常。 方法区是线程共享的。堆:在虚拟机启动时创建,用于存放对象实例和数组元素。 如果堆中没有内存完成实例分配,并且堆也无法扩展时,会抛出OutO... ...
分类:
编程语言 时间:
2017-07-15 17:59:52
阅读次数:
205
一:RabbitMQ介绍 RabbitMQ是AMPQ(高级消息协议队列)的标准实现。也就是说是一种消息队列。 二:RabbitMQ和线程进程queue区别 线程queue:不能跨进程,只能用于多个线程数据交互。 进程queue:只用于父进程和子进程交互或者同属于一个父进程的多个子进程间交互 如果两个 ...
分类:
编程语言 时间:
2017-07-15 15:52:08
阅读次数:
223
声明:以下内容若无特别说明,均指Linux服务器环境下,传输层协议为TCP、主要开发语言为C++。 开发服务器端程序最基础的工作就是处理并发连接,服务器端网络编程处理并发连接主要有以下两种方式: 当线程廉价时,一台机器上可以创建远多于机器CPU物理线程数的“线程”,这是一个线程只处理一个TCP连接, ...
分类:
编程语言 时间:
2017-07-14 20:31:43
阅读次数:
213
在慢速网络上Tomcat线程数开到300以上的水平,不配APR,基本上300个线程狠快就会用满,以后的请求就只好等待。但是配上APR之后,Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输操作,这时并发的线程数量明显下降,从原来的300可能会马上下降 ...
分类:
系统相关 时间:
2017-07-13 23:39:22
阅读次数:
442
一、hystrix在生产中的建议 1、保持timeout的默认值(1000ms),除非需要修改(其实通常会修改) 2、保持threadpool的的线程数为10个,除非需要更多 3、依赖标准的报警和监控系统来捕获问题 4、通过dashboards的实时监控来动态修改配置,直到满意为止 二、配置信息(d ...
分类:
其他好文 时间:
2017-07-13 16:07:02
阅读次数:
188
1、什么是线程池? 线程池是一种多线程处理形式,处理过程中将任务添加到队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。 2、线程池的优点 使用线程池可以有效控制系统中并发线程的数量,当系统包含大量并发线程时,会导致性能急剧下降,甚至JVM的奔溃,而线程池的最大线程数参数可以控制并发线 ...
分类:
编程语言 时间:
2017-07-13 01:04:09
阅读次数:
187
最近在刚好一些业务经常把线程跑满,导致服务器资源用完,所以就写了一个脚本用于Nagios下相关进程的最大线程数的监控,Unix的服务器上最大的线程数默认的是1024,当然在业务繁忙的服务器中这样肯定是不够用的,当然在实际生产环境中做初始化调优时一般都会有做过修改,如开启..
分类:
移动开发 时间:
2017-07-12 10:18:08
阅读次数:
234
1、避免重复,否则出现bug多处一样的代码让你无从下手,除非debug调试;2、相同的功能逻辑应归类划分,管理好类似逻辑,试着对比抽取;3、编程不要急于编程,想清楚输入和输出,异常输入的处理,对函数返回码的验证;否则,一个小小的失误可能花费你1个小时的时间去寻找莫名其妙的bug;4、做好自己的工具库 ...
分类:
其他好文 时间:
2017-07-11 11:20:32
阅读次数:
204
默认情况下,一个线程的栈要预留1M的内存空间 而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程 但是内存当然不可能完全拿来作线程的栈,所以实际数目要比这个值要小。 你也可以通过连接时修改默认栈大小,将其改的比较小,这样就可以多开一些线程。 如将默认栈的大小改成512K ...
分类:
编程语言 时间:
2017-07-10 00:33:38
阅读次数:
3004
你可以在这里看到这个demo的源码: https://github.com/onlynight/MultiThreadDownloader 效果图 这张效果图是同时开启三个下载任务,限制下载线程数量的效果图。 多线程下载原理 多线程下载的原理就是将下载任务分割成一个个小片段再将每个小片段分配给各个线 ...
分类:
移动开发 时间:
2017-07-10 00:32:35
阅读次数:
316