Servus zusammen,
Ich Programmieren nun schon seit einigen Tagen an einem Windows Dienst der mittels WIN32:DAEMON::SIMPLE und einem perl2exe leuft. Ich habe diesen Dienst auf einem Windows 2003 Server laufen und das seit Wochen ohne probleme. nun wollte ich diesen Dienst unter Windows 2000 zum laufen bekommen. Leider wird mein Speicher nach jedem "Tick" des Dienstes etwas mehr ausgelastet... etwa 30kb was über den Tag verteilt dann doch schon eine nette summe ist.
Ich habe versucht alle definierten Variablen nach dem durchlauf mit einem
wieder frei zu geben .. leider hat auch das nichts gebracht. Gibt es eine möglichkeit alle Variablen, Hashes und sonstige Arrays wieder freizugeben? oder muss ich den dienst einfach anders Initialisieren (beispiel wie ich es aktuell mache volgt):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
use Win32;
use Win32::OLE;
use Win32::Console qw();
use Win32::Daemon;
my $dir = dirname(__FILE__);
$cfg = new Config::IniFiles(-file=>"$dir/config.ini");
use Win32::Daemon::Simple
Service => 'ProcMon',
Name => 'ProcMon',
Version => '2.0.9',
Info => {display => 'ProcMon',
description => 'ProcessMonitoring',
user => '',
pwd => '',
interactive => 0,},
Params => { # the default parameters
Tick => 0,
Talkative => 0,
Interval => 1, # minutes
LogFile => "logfile.log",
Description => "My Desc."
},
Param_modify => {
LogFile => sub {File::Spec->rel2abs($_[0])},
Interval => sub {
no warnings;
my $interval = 0+$_[0];
die "The interval must be a positive number!\n"
unless $interval > 0;
return $interval},
Tick => sub {return ($_[0] ? 1 : 0)},
},
Run_params => {
};
# initialization
ServiceLoop(\&LoopPC);
#//-->ServiceLoop(\&test);
# cleanup
$cfg->DESTROY();
undef $cfg;
Log("Going down");
exit;