v8 :: ResourceConstraints的语义? [英] The semantics of v8::ResourceConstraints?
本文介绍了v8 :: ResourceConstraints的语义?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
v8::ResourceConstraints
类的定义如下:
class V8EXPORT ResourceConstraints {
public:
ResourceConstraints();
int max_young_space_size() const { return max_young_space_size_; }
void set_max_young_space_size(int value) { max_young_space_size_ = value; }
int max_old_space_size() const { return max_old_space_size_; }
void set_max_old_space_size(int value) { max_old_space_size_ = value; }
int max_executable_size() { return max_executable_size_; }
void set_max_executable_size(int value) { max_executable_size_ = value; }
uint32_t* stack_limit() const { return stack_limit_; }
// Sets an address beyond which the VM's stack may not grow.
void set_stack_limit(uint32_t* value) { stack_limit_ = value; }
private:
int max_young_space_size_;
int max_old_space_size_;
int max_executable_size_;
uint32_t* stack_limit_;
};
有人可以告诉我young_space_size
,old_space_size
和max_executable_size
是什么吗?它们的单位是什么,它们之间的关系如何,等等?似乎没有太多的文档.
Can someone tell me what young_space_size
, old_space_size
, and max_executable_size
are? What are their units, how are they related, etc.? There doesn't seem to be much documentation.
此外,如何使用stack_limit
属性?例如,如果我希望V8隔离区使用不超过1MB的堆栈空间,该如何计算stack_limit
的指针值?
Also, how does one use the stack_limit
property? For example, if I want my V8 isolate to use no more than 1MB of stack space, how would I calculate a pointer value for stack_limit
?
推荐答案
v8/test/cctest/test-api.cc使用此函数来计算限制:
v8/test/cctest/test-api.cc uses this function to calculate the limit:
// Uses the address of a local variable to determine the stack top now.
// Given a size, returns an address that is that far from the current
// top of stack.
static uint32_t* ComputeStackLimit(uint32_t size) {
uint32_t* answer = &size - (size / sizeof(size));
// If the size is very large and the stack is very near the bottom of
// memory then the calculation above may wrap around and give an address
// that is above the (downwards-growing) stack. In that case we return
// a very low address.
if (answer > &size) return reinterpret_cast<uint32_t*>(sizeof(size));
return answer;
}
这篇关于v8 :: ResourceConstraints的语义?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文