2 songxu1 songxu1 于 2014.11.25 17:27 提问

perl中在TIEHASH中的DESTROY何时能够执行?

我用swig、perl、C把一些函数export了,有一些是关于memory的,比如mem_read, mem_write, mem_alloc, mem_free, 然后写了TIEHASH 中去mem_alloc, 在DESTROY中去mem_free, 但是我发现tie了一个对象,但是对象引用计数应该为0了,但是内存还不释放,它要等一段时间才会释放,这样会导致发送一些大的数据包的话,内存溢出。有人知道这个DESTROY到底什么时候才会执行吗?谢谢!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
关于在DESTROY方法中执行命令的问题
#!/usr/bin/perl package test; sub new() { my $ref = shift; my $class = ref($ref) || $ref; my $self = {}; bless($self, $class); return $self; } sub DESTROY() { my $self = shift; print "this is destroy/n";
servlet 生命周期 init destroy 调用
destroy()方法是在GenericServlet这个类中的,源代码如下 /** * Called by the servlet container to indicate to a servlet that the * servlet is being taken out of service. See {@link Servlet#destroy}. *
perl - Java调用perl
代码亲自跑一下,很好玩 Java 调用 perl  Java代码   Runtime.getRuntime().exec("perl C:\\Perl\\execise.pl");   Java 调用 perl 通过IO的方式来得到返回值  Java代码   package fiveGame;      import 
perl: $&, $@, $!, exit status
$&: 正则匹配中,将匹配的那部分字符串自动存储在$&中。   $@: 当执行eval块时发生了通常的严重错误,eval块会停止执行,但程序不会崩溃。当eval结束时,你想知道它是正常结束的, 还是发生了严重错误。这些结果放在特殊变量$@之中。如果eval为你捕捉了严重错误,则$@中将有程序失败的原因,可 能如:Illegal division by zero at my_program
perl中如何执行外部命令
<br /><br />在perl中反勾号(``),system和exec都用来执行命令,这篇文章将给我们介绍它们各自的使用方法,联系,以及区别。<br />一、使用方法<br />1.       反勾号(``)<br />首先,我们有命令输入操作符,也叫反勾号操作符,因为它看起来象这样:<br />$info = `finger $user`;<br />一个用反勾号(技术上叫重音号)引起的字串首先进行变量替换,就象一个双引号引起的字串一样。得到的结果然后被系统当作一个命令行,而且那个命令的输出成为伪文
Perl执行shell命令的几种方式及其区别
There are many ways to execute external commands from Perl. The most commons are: system functionexec functionbackticks (``) operatoropen function All of these methods have different behaviour, so
PERL中对SHELL命令的调用细节
在PERL开发中,通常可以用system函数或 ``操作符来执行系统命令,但注意对 alias, bg, bind, break, builtin, cd, command, compgen, complete, continue, declare, dirs, disown,       echo, enable, eval, exec, exit, export, fc, fg, get
JSP的jspInit函数与jspDestroy函数(转)
若要在jsp页面开始执行时进行某些数据的初始化,可以利用jspInit函数完成。此函数将在jsp页面被执行时调用,且当jsp页面重新整理时,并不会被再度执行。当关闭服务器时,jspDestroy函数将被执行,可以利用该函数进行数据的善后处理工作。下面举个简单的例子说明,文件InitDes.jsp代码如下: <%@ page contentType="text/html; charset=GB2312"%> <%! public void jspInit() { System.out.prin
window cmd命令行下执行perl语句
windows cmd命令行下需要用双引号 “”来对命令行参数打包;举例如下:perl -e " print 'hello world' "; #print 'hello world' 这个是perl语句PS:window下面必须是双引号来包括,否则会报错: Can’t find string terminator “’” anywhere before EOF at -e line 1
perl中调用Linux命令
1. system(”command”);使用该命令将开启一个子进程执行引号中的命令,父进程将等待子进程结束并继续执行下面的代码。2. exec(”command”);效果同system命令类似,区别是不会开启子进程,而是取代父进程,因此执行完引号中的命令后进程即结束。一般和fork配合使用。3. `command`;使用反引号调用外部命令能够捕获其标准输出,并按行返回且每行结束处附带一个