考虑在一个平台上构建一个web应用程序,其中每个请求都由一个用户级线程(ULT)处理(绿色线程/erlang进程/goroutine/...任何轻量级线程)。假设每个请求都是无状态的,并且像DB连接这样的资源在应用程序启动时获得,并在这些线程之间共享。在这些线程中有什么垃圾回收的需求?
通常,这样的线程是短时间运行的(几毫秒),如果设计良好,不会使用超过几个(KB或MB)的内存。如果线程中分配的资源的垃圾收集是在线程退出时完成的,并且独立于其他线程,那么即使是第98个或第99个百分位数的请求也不会有GC暂停。所有请求都将在可预测的时间内得到响应。
这样的模型有什么问题?为什么它没有被广泛使用?
发布于 2015-01-15 16:56:16
你的假设可能不是真的。
如果设计良好,
不会使用超过几个(KB或MB)的内存
想象一下,在web应用程序中使用的文本文件中有一个计算单词的函数。一些天真实现可能是,
def count_words(text):
words = text.split()
count = {}
for w in words:
if w in count:
count[w] += 1
else:
count[w] = 1
return count它分配的内存比文本大。
https://stackoverflow.com/questions/27959094
复制相似问题