![]() |
|
|
| Subject:
Perl deugging / profiling: Checking runtime variable size
Category: Computers > Programming Asked by: snowcat-ga List Price: $10.00 |
Posted:
23 Oct 2003 07:59 PDT
Expires: 22 Nov 2003 06:59 PST Question ID: 269025 |
Hi,
I need to fix the following error in my perl program:
Out of memory during "large" request for 16781312 bytes, total sbrk()
is
1247642432 bytes at /spfs/reports/bin//cobanalyzer.pl line 4948, <JSP>
line 5319224.
The line 4948 is: $query{$key} = $val;
I only have time to change a few lines, so, is there any way I can
identify which variables / hashes consume the most memory so that I
can only optimize a coupld of places?
Thanks,
Matt |
|
| There is no answer at this time. |
|
| Subject:
Re: Perl deugging / profiling: Checking runtime variable size
From: douglas_hunter-ga on 31 Oct 2003 13:48 PST |
You probably want to tie your hash to an on-disk hash. BerkeleyDB's
Perl interface is a good solution to a problem such as this. Here is
some sample code to get you started:
<sample>
#!/usr/bin/perl
use warnings;
use strict;
use BerkeleyDB;
my %query;
my $db = tie %query, 'BerkeleyDB::Btree',
-Flags => BerkeleyDB::DB_CREATE,
-Filename => 'query.db' or die "$!, $BerkeleyDB::Error";
$query{ "key" } = "val";
# and later ...
warn "key has a value of: ", $query{ "key" };
</sample>
If you really want to see the size of your Perl datastructures, you
could use Devel::Size (also available from the CPAN).
Hope that helps a bit.
-- Douglas |
| Subject:
Re: Perl deugging / profiling: Checking runtime variable size
From: snowcat-ga on 31 Oct 2003 14:34 PST |
Douglas,
Thanks for the help. If any of the following 3 directions works, I'm
done.
1) I installed Devel::Size. But I did not find info about how to view
the hash size such as: $spc_info_{yp}{$mem}{$spc}{$spc_t}
"total_size(\%spc_info_)" seems suspicious.
2) BerkeleyDB is interesting. How can I install it without root
privilege?
3) I have Oracle 8 installed, how can I use Oracle instead of
BerkleyDB here?
Thanks,
Matt |
If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you. |
| Search Google Answers for |
| Google Home - Answers FAQ - Terms of Service - Privacy Policy |