我使用下面的查询,它有句柄,但是即使我删除/不删除句柄的对象,也不会发生任何事情。但是每个人都说总是最终删除对象。我们为什么要删除它们?如果我们不删除它们会怎么样?我们怎么看得出来?
finally:
if valid-handle(hQueryTest) then delete object hQueryTest no-error.
if valid-handle(hQuerytestvalue) then delete object hQuerytestvalue no-error.
end finally.
如我所知,如果int变量(值类型)直接在类(引用类型)中声明,则在堆上分配的变量的内存。
但是,如果类中有一个方法,并且变量是在方法中声明的,或者是一个参数,则在堆栈上分配的内存。
public class A
{
int x; // heap
public void Func(int y) // stack
{
int z; // stack
}
}
我怎么看,内存分配在哪里?
我在Jeffrey Richter和Christophe Nasarre的书Windows via C-C++中遇到了下面的注释。
检查以下代码:v
OID EXEFunc() {
PVOID pv = DLLFunc();
// Access the storage pointed to by pv...
// Assumes that pv is in EXE's C/C++ run-time heap
free(pv);
}
PVOID DLLFunc() {
// Allocate block from DLL's C/C++ run-time heap
return(
当系统耗尽内存时,ubuntu12.04将终止mysql进程:
Out of memory: Kill process 17074 (mysqld) score 146 or sacrifice child
所以这个过程最终被杀了。这种情况发生在服务器负载高峰时,主要是因为apache变得疯狂,占用了剩余的可用内存。可能的办法可以是:
以某种方式改变mysql的优先级,这样它就不会被杀死(可能是坏的修复,因为其他的东西会被杀死)
监视mysql的状态,并在它被杀死时自动重新启动(我正在考虑的那个,但不知道怎么做)。
你怎么看的?