Closed
Bug 49539
Opened 25 years ago
Closed 23 years ago
Does a >3.2MB file (bunch of tables, >7975 rows), really need 19MB of memory?
Categories
(Core Graveyard :: Tracking, defect, P2)
Core Graveyard
Tracking
Tracking
(Not tracked)
RESOLVED
FIXED
mozilla1.1beta
People
(Reporter: jag+mozbugs, Assigned: attinasi)
References
()
Details
(Keywords: memory-footprint, perf)
http://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&email1=&emailtype1=substring&email2=&emailtype2=substring&bugidtype=include&bug_id=&changedin=&votes=&chfield=bug_status&chfieldfrom=01%2F01%2F1970&chfieldto=Now&chfieldvalue=reopened&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&namedcmd=allmybugs&newqueryname=&order=bugs.bug_id
That URL opens a bugzilla query report with 5114 bugs. (You sure you want to use
this for T-Box?)
On a nightly build, using top to measure "about:blank" and the above url, I went
from size 19440, rss 18M, share 10380, to size 48424, rss 43M, share 7772.
Filing per request.
Comment 1•25 years ago
|
||
For comparison, testing the 2000-08-18-08-M18 nightly on WinNT box with 128MB
physical RAM:
1. After start (displaying http://www.mozilla.org/):
Mem: 18752k VM: 12876k (55MB of physical RAM free at this point)
2. After displaying URL above:
Mem: 50972k VM: 45000k (34MB of physical RAM free at this point)
3. After clicking on [Mozilla.org] button on Perrsonal Toolbar:
Mem: 36384k VM: 30400k (49MB of physical RAM free at this point)
(no other action taken between steps 2 and 3, other than recording these
numbers in a NN 4.74 window)
Early in the pageload (before the first </TABLE>), Mozilla was increasing
memory usage ~80k at a time, so the ballooning memory usage must be nonlinear.
nav triage team:
Does this bloat still occur?
Keywords: nsbeta1-
Target Milestone: --- → Future
Comment 4•24 years ago
|
||
yes, this bloat still exists. on w2k, mem goes up 50M when I load this page,
and cpu gets pegged. I had to kill mozilla. I was clicking on the url in the
first report of this bug. over to cathleen for look/owner.
Assignee: mcafee → cathleen
Verified with my win2K box.
1) run taskinfo2000
2) launch mozilla and load this bug page, memory used 60,768Kb
3) click on the quary link in the bug (a long while till it's done), memory used
191,720Kb. The highest run I saw was 202,584Kb.
Eventually (within a minute or two) mozilla will freeze and die.
I did the same test with 4.77, memory went from 53,908Kb to 115,348Kb. 4.77
still standing.
OS: Linux → All
Hardware: PC → All
Comment 6•24 years ago
|
||
Let's use bloat-blame to figure out where the memory is going!
1. Make a Linux build (using egcs-1.1.2) with the following flags in a
partition with a _ton_ of disk space.
--enable-trace-malloc
--enable-cpp-rtti
--enable-debug
2. Run gtkEmbed from mozilla/dist/bin as follows:
LD_LIBRARY_PATH=`pwd` MOZILLA_FIVE_HOME=`pwd` \
gtkEmbed --trace-malloc /dev/null "(Insert URL Here)"
3. Once the page finishes loading, press the ``dump memory usage button''. This
will create a monster file in mozilla/dist/bin called ``allocations.log''
4. Check out the trace-malloc tools. From the mozilla directory,
cvs co tools/trace-malloc
5. Process the log:
tools/trace-malloc/histogram.pl dist/bin/allocations.log > hist
tools/trace-malloc/histogram-pretty.sh hist
6. Paste the output into the bug
More details on how to use the trace-malloc tools at
http://www.mozilla.org/projects/footprint/live-bloat.html
Good luck!
Comment 8•24 years ago
|
||
Updating the summary, noting that the query is for any bug reopened ever,
which means the list will grow month by month. See bug 78142 for a slightly
more sane query (about 3000 bugs, which will not change over time).
Summary: Does a 2.1MB file (bunch of tables, 5114 rows), really need 25MB of memory? → Does a >3.2MB file (bunch of tables, >7975 rows), really need 25MB of memory?
new test query, using jrgm's bug 78142
http://bugzilla.mozilla.org/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&resolution=FIXED&resolution=INVALID&resolution=WONTFIX&resolution=LATER&resolution=REMIND&resolution=DUPLICATE&resolution=WORKSFORME&resolution=MOVED&rep_platform=All&rep_platform=DEC&rep_platform=HP&rep_platform=Macintosh&rep_platform=PC&rep_platform=SGI&rep_platform=Sun&rep_platform=Other&op_sys=All&op_sys=Windows+3.1&op_sys=Windows+95&op_sys=Windows+98&op_sys=Windows+ME&op_sys=Windows+2000&op_sys=Windows+NT&op_sys=Mac+System+7&op_sys=Mac+System+7.5&op_sys=Mac+System+7.6.1&op_sys=Mac+System+8.0&op_sys=Mac+System+8.5&op_sys=Mac+System+8.6&op_sys=Mac+System+9.x&op_sys=MacOS+X&op_sys=Linux&op_sys=BSDI&op_sys=FreeBSD&op_sys=NetBSD&op_sys=OpenBSD&op_sys=AIX&op_sys=BeOS&op_sys=HP-UX&op_sys=IRIX&op_sys=Neutrino&op_sys=OpenVMS&op_sys=OS%2F2&op_sys=OSF%2F1&op_sys=Solaris&op_sys=SunOS&op_sys=other&priority=P1&priority=P2&priority=P3&priority=P4&priority=P5&bug_severity=blocker&bug_severity=critical&bug_severity=major&bug_severity=normal&bug_severity=minor&bug_severity=trivial&bug_severity=enhancement&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&order=Reuse+same+sort+as+last+time
though this query results 54427 bugs
trace malloc output file coming up...
Comment 10•24 years ago
|
||
trace malloc output
================================
large test url (8151 total query bugs)
http://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&email1=&emailtype1=substring&email2=&emailtype2=substring&bugidtype=include&bug_id=&changedin=&votes=&chfield=bug_status&chfieldfrom=01%2F01%2F1970&chfieldto=Now&chfieldvalue=reopened&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&namedcmd=allmybugs&newqueryname=&order=bugs.bug_id
Type Count Bytes %Total
TOTAL 510395 37463975 100.00
FrameArena 3906 16073190 42.90
nsScanner 291 4482698 11.97
HTMLAttributesImpl 51141 3067160 8.19
void* 117690 2424841 6.47
nsTextNode 50154 2407392 6.43
nsHTMLTableCellElement 45384 2359968 6.30
nsHTMLSpanElement 33854 1489576 3.98
nsLineBox 48292 965840 2.58
nsVoidArray 17756 613580 1.64
nsTextFragment 50121 546808 1.46
nsRegistry 1 512000 1.37
nsHTMLAnchorElement 5887 329672 0.88
nsHTMLTableRowElement 5655 271440 0.72
nsCellMap 50997 226636 0.60
nsTokenAllocator 40 194840 0.52
gtk-unclassified 647 130057 0.35
xpti-unclassified 97 110336 0.29
nsImageGTK 11 105676 0.28
nsFontMetricsGTK 1067 104295 0.28
OTHER 27404 1047970 2.80
jrgm's url (3039 total query bugs) **ignore my previous comment and url**
http://bugzilla.mozilla.org/buglist.cgi?email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfield=%5BBug+creation%5D&chfieldfrom=2001-02-23&chfieldto=2001-03-22&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&namedcmd=asdf&newqueryname=&order=Reuse+same+sort+as+last+time
Type Count Bytes %Total
TOTAL 102749 6975755 100.00
FrameArena 716 2946340 42.24
nsScanner 51 590784 8.47
HTMLAttributesImpl 9341 560080 8.03
void* 22855 518142 7.43
nsHTMLTableCellElement 8371 435292 6.24
nsTextNode 8963 430224 6.17
nsHTMLSpanElement 6270 275880 3.95
nsLineBox 8632 172640 2.47
nsVoidArray 3463 125336 1.80
nsTextFragment 9088 108748 1.56
nsTokenAllocator 15 73065 1.05
nsHTMLAnchorElement 1116 62496 0.90
nsHTMLTableRowElement 1046 50208 0.72
X-unclassified 1235 45490 0.65
xpti-unclassified 44 45056 0.65
nsCellMap 9362 41696 0.60
nsComponentManagerImpl 1599 38928 0.56
nsZipArchive 691 30187 0.43
unclassified-string 1009 29581 0.42
OTHER 8882 395582 5.67
Comment 11•24 years ago
|
||
The above information indicates the requested size of objects that are live at
the time the snapshot was taken. The snapshot was taken after the page finished
loading. So...I would've thought that the objects attributed to nsScanner (4MB
worth!) would go away once the document load completes. Here are the stack
traces that are being ``counted'' as nsScanner...
<nsScanner>
PR_Malloc
nsMemoryImpl::Alloc(unsigned int)
nsMemory::Alloc(unsigned int)
nsScanner::Append(char const *, unsigned int)
<nsScanner>
__builtin_new
nsSlidingString::AppendBuffer(unsigned short *, unsigned short *, unsigned short
*)
nsScanner::AppendToBuffer(unsigned short *, unsigned short *, unsigned short *)
<nsScanner>
__builtin_new
nsScanner::AppendToBuffer(unsigned short *, unsigned short *, unsigned short *)
<nsScanner>
PR_Malloc
nsMemoryImpl::Alloc(unsigned int)
nsMemory::Alloc(unsigned int)
unsigned short * AllocateStringCopy<unsigned short, unsigned
short>(basic_nsAReadableString<unsigned short> const &, unsigned short *)
ToNewUnicode(basic_nsAReadableString<unsigned short> const &)
nsScanner::Append(basic_nsAReadableString<unsigned short> const &)
<nsScanner>
PR_Malloc
nsMemoryImpl::Alloc(unsigned int)
nsMemory::Alloc(unsigned int)
nsStr::Alloc(nsStr &, unsigned int)
nsStr::Realloc(nsStr &, unsigned int)
nsStr::EnsureCapacity(nsStr &, unsigned int)
nsStr::GrowCapacity(nsStr &, unsigned int)
nsString::SetCapacity(unsigned int)
nsString::SetLength(unsigned int)
CopyUnicodeTo(nsReadingIterator<unsigned short> const &,
nsReadingIterator<unsigned short> const &, basic_nsAWritableString<unsigned
short> &)
nsScanner::CopyUnusedData(nsString &)
<nsScanner>
PR_Malloc
nsMemoryImpl::Alloc(unsigned int)
nsMemory::Alloc(unsigned int)
nsStr::Alloc(nsStr &, unsigned int)
nsStr::Realloc(nsStr &, unsigned int)
nsStr::EnsureCapacity(nsStr &, unsigned int)
nsStr::GrowCapacity(nsStr &, unsigned int)
nsStr::StrAppend(nsStr &, nsStr const &, unsigned int, int)
nsStr::StrAssign(nsStr &, nsStr const &, unsigned int, int)
nsString::nsString(nsString const &)
nsScanner::nsScanner(nsString &, int, nsString const &, nsCharsetSource)
Comment 12•24 years ago
|
||
The problem sounds very similar to bug 75641. Waterson, which build are you
using? I'll try this on my machine.
On the 3000 bugs URL, I'm seeing about 3.1MB allocated at the stack:
PR_Malloc
nsMemory::Alloc(unsigned int)
nsScanner::Append(const char*, unsigned int)
nsByteArrayInputStream::ReadSegments(PFjP14nsIInputStreamPvPKcjjPjES3_jS6_)
nsParser::OnDataAvailable(nsIRequest*, nsIRequest*, nsIInputStream,
unsigned int, unsigned int)
(I did this in mozilla, so it could be related to the search stuff, but I don't
think so. The demangling of the parameters to |ReadSegments| is left as an
exercise to the reader :-)
What uses nsByteArrayInputStream?
Comment 14•24 years ago
|
||
data was generated based on a debug build from Monday 5/14/01
Comment 15•24 years ago
|
||
new trace-malloc results from 5/22 linux debug build:
large test url (8092 bugs)
http://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&email1=&emailtype1=substring&email2=&emailtype2=substring&bugidtype=include&bug_id=&changedin=&votes=&chfield=bug_status&chfieldfrom=01%2F01%2F1970&chfieldto=Now&chfieldvalue=reopened&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&namedcmd=allmybugs&newqueryname=&order=bugs.bug_id
Type Count Bytes %Total
TOTAL 520512 38578000 100.00
FrameArena 3971 16340665 42.36
nsScanner 295 4768896 12.36
void* 119911 3161235 8.19
HTMLAttributesImpl 51960 3116472 8.08
nsTextNode 51100 2452800 6.36
nsHTMLTableCellElement 46071 2395692 6.21
nsHTMLSpanElement 34399 1513556 3.92
nsLineBox 48996 979920 2.54
nsVoidArray 18118 631452 1.64
nsTextFragment 51075 557600 1.45
nsHTMLAnchorElement 5975 334600 0.87
nsHTMLTableRowElement 5799 278352 0.72
nsCellMap 51827 230248 0.60
nsTokenAllocator 46 224066 0.58
gtk-unclassified 664 123578 0.32
nsFontMetricsGTK 1032 118215 0.31
xpti-unclassified 101 117912 0.31
nsImageGTK 6 105116 0.27
nsComponentManagerImpl 3362 77364 0.20
OTHER 25804 1050261 2.72
small test url (3031 bugs)
http://bugzilla.mozilla.org/buglist.cgi?email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfield=%5BBug+creation%5D&chfieldfrom=2001-02-23&chfieldto=2001-03-22&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&namedcmd=asdf&newqueryname=&order=Reuse+same+sort+as+last+time
Type Count Bytes %Total
TOTAL 147879 10422436 100.00
FrameArena 1027 4226105 40.55
nsScanner 73 1270018 12.19
HTMLAttributesImpl 13412 803856 7.71
void* 32961 746625 7.16
nsTextNode 13000 624000 5.99
nsHTMLTableCellElement 11940 620880 5.96
nsHTMLSpanElement 8883 390852 3.75
nsLineBox 12281 245620 2.36
nsVoidArray 4953 173536 1.67
nsTextFragment 12997 131109 1.26
xpti-unclassified 76 92312 0.89
nsHTMLAnchorElement 1571 87976 0.84
nsHTMLTableRowElement 1518 72864 0.70
nsTokenAllocator 14 68194 0.65
nsCellMap 13375 59336 0.57
gtk-unclassified 438 55390 0.53
nsComponentManagerImpl 2322 54708 0.52
unclassified-string 1506 45828 0.44
nsZipArchive 982 42922 0.41
OTHER 14550 610305 5.86
Comment 16•24 years ago
|
||
Let me investigate this bug.
CCing cathleen.
Status: NEW → ASSIGNED
Target Milestone: Future → mozilla0.9.2
Comment 17•24 years ago
|
||
Moving to my plate.
Updated•24 years ago
|
Priority: P3 → P1
Comment 18•24 years ago
|
||
*** Bug 84820 has been marked as a duplicate of this bug. ***
Comment 19•24 years ago
|
||
*** Bug 50411 has been marked as a duplicate of this bug. ***
Comment 20•24 years ago
|
||
*** Bug 84944 has been marked as a duplicate of this bug. ***
There is always an expansion factor when you read a file and display the
contents, because you need so much more for display. The expansion factor will
naturally depend on the structures in the document and the complexity of the
display (like tables) that is needed. What is a reasonable expansion factor is a
different thing. I did some testing a 2-3 years ago with Mozilla and Multidoc
Pro (an SGML browser I was working on at that time).
Multidoc Pro's expansion factor was about 5. This meant that if I loaded a file
of size 1MB, it took about 5MB of RAM to load and display this document. This is
extremely good expansion factor. The code had been optimized for size and speed
over several years. Multidoc Pro did not support Unicode when the testing was done.
At that time Mozilla's expansion factor was 12-16 (it varied, and I can't
remember exactly). That was obviously too much. I thought an expansion factor of
10 might be attainable at that time.
If 3.2MB file grows into 25MB in memory, we get an expansion factor of about 8!
Somebody might want to try and calculate some kind of theoretical lower limit to
the expansion factor (supposing we load the whole document and lay it out
completely). Because our internal representation is 32-bit Unicode, this means
the expansion factor must be over 2 for non-Unicode documents.
I also checked this file with IE 5.0, the expansion factor was 12. Just to be
sure, I checked what it was for NS6.1b1: 17. I used the first URL in the first
comment to this bug, assuming that was 3.8 megs. So it seems I was measuring
something else than what you are talking about...
Comment 23•24 years ago
|
||
6/25 debug trace-malloc build, running small test url (3030 bugs)
http://bugzilla.mozilla.org/buglist.cgi?email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfield=%5BBug+creation%5D&chfieldfrom=2001-02-23&chfieldto=2001-03-22&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&namedcmd=asdf&newqueryname=&order=Reuse+same+sort+as+last+time
Type Count Bytes %Total
TOTAL 254480 18750891 100.00
FrameArena 1756 7225940 38.54
nsScanner 135 2254934 12.03
void* 57598 1884127 10.05
HTMLAttributesImpl 23183 1390060 7.41
nsTextNode 22516 1080768 5.76
nsHTMLTableCellElement 20531 1067612 5.69
nsHTMLSpanElement 15371 676324 3.61
nsLineBox 21436 428720 2.29
nsVoidArray 8543 299268 1.60
nsTextFragment 22505 242637 1.29
nsTokenAllocator 43 209453 1.12
gtk-unclassified 777 155744 0.83
nsHTMLAnchorElement 2693 150808 0.80
xpti-unclassified 126 141432 0.75
nsHTMLTableRowElement 2549 122352 0.65
nsComponentManagerImpl 4022 116560 0.62
nsImageGTK 14 105888 0.56
nsCellMap 23058 102540 0.55
nsZipArchive 1820 79312 0.42
OTHER 25804 1016412 5.42
Comment 24•24 years ago
|
||
new build from 6/26, pulled trunk after dougt checked in fix for bug 70398
trace-malloc result from running small url test (3030 bugs)
http://bugzilla.mozilla.org/buglist.cgi?email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfield=%5BBug+creation%5D&chfieldfrom=2001-02-23&chfieldto=2001-03-22&chfieldvalue=&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&namedcmd=asdf&newqueryname=&order=Reuse+same+sort+as+last+time
Type Count Bytes %Total
TOTAL 165738 10404470 100.00
FrameArena 1127 4637605 44.57
void* 38201 1007977 9.69
HTMLAttributesImpl 14542 872052 8.38
nsTextNode 14115 677520 6.51
nsHTMLTableCellElement 12843 667836 6.42
nsHTMLSpanElement 9680 425920 4.09
nsLineBox 13528 270560 2.60
nsVoidArray 5381 187492 1.80
nsTextFragment 13981 137522 1.32
nsZipArchive 2634 113998 1.10
xpti-unclassified 91 107696 1.04
nsImageGTK 9 105264 1.01
gtk-unclassified 479 97875 0.94
nsHTMLAnchorElement 1675 93800 0.90
nsHTMLTableRowElement 1570 75360 0.72
nsComponentManagerImpl 2072 64536 0.62
nsCellMap 14463 64224 0.62
X-unclassified 1676 49980 0.48
JS-unclassified 1056 43572 0.42
OTHER 16615 703681 6.76
Comment 25•24 years ago
|
||
voila! nsScanner bloat disappeared :-)
Comment 26•24 years ago
|
||
Comment 27•24 years ago
|
||
Sweet Justice!
Comment 28•24 years ago
|
||
large url (8551 bugs) trace-malloc results:
http://bugzilla.mozilla.org/buglist.cgi?bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&email1=&emailtype1=substring&email2=&emailtype2=substring&bugidtype=include&bug_id=&changedin=&votes=&chfield=bug_status&chfieldfrom=01%2F01%2F1970&chfieldto=Now&chfieldvalue=reopened&short_desc=&short_desc_type=substring&long_desc=&long_desc_type=substring&bug_file_loc=&bug_file_loc_type=substring&status_whiteboard=&status_whiteboard_type=substring&keywords=&keywords_type=anywords&field0-0-0=noop&type0-0-0=noop&value0-0-0=&namedcmd=allmybugs&newqueryname=&order=bugs.bug_id
Type Count Bytes %Total
TOTAL 304043 19191342 100.00
FrameArena 2323 9559145 49.81
HTMLAttributesImpl 30432 1825700 9.51
void* 70469 1514253 7.89
nsTextNode 29949 1437552 7.49
nsHTMLTableCellElement 26942 1400984 7.30
nsHTMLSpanElement 20207 889108 4.63
nsLineBox 28495 569900 2.97
nsVoidArray 10528 365740 1.91
nsTextFragment 29896 345132 1.80
nsHTMLAnchorElement 3508 196448 1.02
nsHTMLTableRowElement 3371 161808 0.84
nsCellMap 30303 134664 0.70
xpti-unclassified 58 70600 0.37
nsFontMetricsGTK 419 54154 0.28
gtk-unclassified 352 50490 0.26
nsComponentManagerImpl 1870 50224 0.26
nsPersistentProperties 2016 40178 0.21
nsZipArchive 851 37062 0.19
FrameManager 67 35577 0.19
OTHER 11987 452623 2.36
Comment 29•24 years ago
|
||
nice work dougt!
Comment 30•24 years ago
|
||
This rocks!
Comment 31•24 years ago
|
||
So, what do we do with this bug now :-/ ? Pass it on?
Comment 32•24 years ago
|
||
What expansion factor are we aiming for? If we're at 6 now I guess we could aim
for 3-4. Otherwise i think we could mark this bug as fixed.
As I know very little about the data, the only stuff that interests me:
FrameArena 2323 9559145 49.81 <- this is real data, right?
void* 70469 1514253 7.89 <- can we find out who's using this
nsVoidArray 10528 365740 1.91 <- can we find out who's using this
OTHER 11987 452623 2.36 <- should we spend any time looking at this?
but this probably isn't interesting...
Comment 33•24 years ago
|
||
Since the scanner issue has been resolved giving bug back to cathleen to find
appropriate owners for the remaining problems ;-)
Comment 34•24 years ago
|
||
Doesn't look like this is getting fixed before the freeze tomorrow night.
Pushing out a milestone. Please correct if I'm mistaken.
Target Milestone: mozilla0.9.3 → mozilla0.9.4
Summary: Does a >3.2MB file (bunch of tables, >7975 rows), really need 25MB of memory? → Does a >3.2MB file (bunch of tables, >7975 rows), really need 19MB of memory?
Comment 35•24 years ago
|
||
marc, can you help figure out the bloat in FrameArena?
Assignee: cathleen → attinasi
Assignee | ||
Comment 36•24 years ago
|
||
Sure, happy to help - as soon as I finish fixing my 5 topembed bugs ;)
Status: NEW → ASSIGNED
Assignee | ||
Comment 37•24 years ago
|
||
FrameArena holds frames, as you might guess. I loaded the query (which results
in more than 9000 hits now) and dumped the frame size stats from Viewer. Here is
the result:
Frame Type Count TotalSize MinSize MaxSize AvgSize
---------- ----- --------- ------- ------- -------
AreaFrame 5 380 76 76 76
BRFrame 2 88 44 44 44
BlockFrame 73787 5607812 76 76 76
CanvasFrame 1 72 72 72 72
HRFrame 2 128 64 64 64
ImageFrame 1 0 0 0 0
InlineFrame 64627 3619112 56 56 56
LineBox:block,big 1 60 60 60 60
LineBox:block,small 59 2360 40 40 40
LineBox:inline,big 11 660 60 60 60
LineBox:inline,smal 74202 2968080 40 40 40
ScrollFrame 4 224 56 56 56
TableCellFrame 73779 6787668 92 92 92
TableCellMap 52 2912 56 56 56
TableColFrame 379 37900 100 100 100
TableColGroupFrame 52 3536 68 68 68
TableFrame 52 7488 144 144 144
TableLayoutStrategy 52 1248 24 24 24
TableOuterFrame 52 3952 76 76 76
TableRowFrame 9227 701252 76 76 76
TableRowGroupFrame 52 3120 60 60 60
TextFrame 81994 5249248 64 68 64
TextInputFrame 1 56 56 56 56
ViewportFrame 1 60 60 60 60
gfxButtonControlFra 3 168 56 56 56
*** Total *** 378420 24998744
378 thousand frames taking up almost 25MB. Wow. 81 thousand text frames alone
take up 5MB, and 73 thousand table cells take up over 6 and a half MB. That is a
seriously large page or pretty complicated HTML (the file I loaded is 3.7 MB in
size, when saved from Mozilla).
I don't know just where to go with this data: could we try to shrink the size of
frames (tableCell frames are pretty big)? Could we try to eliminate some frames
(like, there is a block for every table cell - is that really necessary)? Should
we look at the LineBox 'frames' and see if they can be shrunk or eliminated? To
reduce this much, I think we need to seriously rethink the layout architecture,
and that scares me plenty.
Other ideas?
Cc: vidur and dp 'cos I think they would be interested in this...
Comment 39•24 years ago
|
||
*** Bug 99903 has been marked as a duplicate of this bug. ***
Comment 40•24 years ago
|
||
I would like to mention that I reported the bug 99903 that has been said
duplicate of that one.
My problem is that, as I said in the report for that bug, the browser then hangs
for 30 seconds after the page is downloaded.
I have a good machine (Pentium 1Ghz, 256 Mo) and not that many applications opened.
I see that if I open the same page with IE 5.x, IE doesn't hang as Mozilla does.
I forgot to say in my report that even if Mozilla is unresponsive, other
applications are still responsive. So it is not a memory only problem.
Furthermore, in the report for the bug 49539, the expansion factor is said to be
bigger in IE. Why then should Mozilla hang?
Are we sure the two bugs are identical?
Assignee | ||
Comment 41•24 years ago
|
||
end of milestone shuffle...
Target Milestone: mozilla0.9.5 → mozilla0.9.6
Assignee | ||
Updated•24 years ago
|
Severity: normal → major
Priority: P1 → P2
Target Milestone: mozilla0.9.6 → mozilla1.0
Comment 42•23 years ago
|
||
Keywords: footprint
Target Milestone: mozilla1.0 → mozilla1.1
Comment 43•23 years ago
|
||
*** Bug 126861 has been marked as a duplicate of this bug. ***
Comment 44•23 years ago
|
||
*** Bug 124441 has been marked as a duplicate of this bug. ***
Comment 45•23 years ago
|
||
Build from 2/14 on Win98/400MHz/128MB:
- The list of open bugs I reported (~300) takes 7 seconds.
- The list of bugs I reported (~800) takes 25 seconds.
A 2/20 build seems to be about 1/3 faster.
On the 2/20 build, the UNCO list (~2000) effectively hangs Mozilla for a minute
while it allocates >100MB. The strange thing is that although it hangs for
several periods of ~7 seconds as it loads the page, the one-minute hang appears
to happen just after the throbber *stops* spinning.
If this is unrelated to the FrameArena stuff, please reopen one of the dups...
Comment 46•23 years ago
|
||
This could be partially fixed (although the memory issue still remains) by not
rendering the entire page at once. There is no need to render the entire page
when only a small portion is visible on screen. See bug 122581.
Comment 47•23 years ago
|
||
I don't know what you mean by "render", but the whole page has to be parsed and
analyzed to display only a small subset of it. That is beacuse the page can
contain elements that affect the displayed area even if they are written late in
the file. That could be absolute positioned elemenents, elements that requires a
table to grow, elements that contain scripts or event handlers that must be run...
But if there are anything specific you think we do now that don't have to done,
please tell us. We could really need more optimizations for big pages.
Comment 48•23 years ago
|
||
Right, but that doesn't mean it has to be all in memory at once. If you are
parsing a page that is extremely huge, you could sort of "page" parts of it in
and out of memory from disk. Doing so would definately be more efficient than
bogging down the system memory and causing the operating system to scrap for
more space. For instance, images that are off screen don't need to be stored in
memory, and even sections of tables, etc don't need to be if they are off screen.
Comment 49•23 years ago
|
||
no no no no no! mozilla has reinvented lots of things, but i'm pretty sure
shaver and brendan would tell us that we should not reinvent paging. That's
the os's job, and it should do it well enough for our purposes. if it doesn't,
then the user should take steps to fix it as having bad paging would hurt all
apps. any memory not recently used (and even memory recently used) is a
candidate for the os to page out, let the os do its job.
mind you i'm not saying we shouldn't release memory.
Comment 50•23 years ago
|
||
I'm not talking about reinventing paging. I am talking about only loading so
much of the page as so it doesn't overburden memory if it is a huge page. There
is no reason on a page that is 1MB of tables or whatever that the whole page
needs to stored in memory at once. This isn't reinventing paging, this is not
being a memory hog so that the os doesn't have to page. That is a big
difference. When you have a web page that is 10000 lines and only 100 are
visible in the window, why have all 10000 lines in memory? Wouldn't 500 suffice?
Comment 51•23 years ago
|
||
Paging is inevitably a slow operation, and avoiding it by proper use of the
program's memory would be more efficient than sucking up gobs of system memory
so that the operating system has to start paging. Timeless, I agree we shouldn't
handle paging, but it almost sounds as if you are saying that we should just
suck up memory in loading a huge page and blame it on the os because its not
fast at paging. What about when the system is low on hard disk space?
Bug 122581 talks about a page with a lot of images. Is it really necessary to
have all the images in memory at once? Is it necessary to have an entire page of
text in memory at once? Couldn't Mozilla tag the things that other parts of the
page might depend on and keep them in memory?
What I'm basically asking is if there is any way to more efficiently
(memory-wise) parse a page. Is there any way to not parse it all at once and not
have it all in memory at one time?
Comment 52•23 years ago
|
||
Where do you suppose the other 9500 lines should be stored? We can't just forget
about them, because soon the user will scroll down to see it. I don't see much
of a difference between us writing down the information to disk and letting the
OS do it. The main difference is that us doing it will always kill performance
while letting the OS do will let us run from memory when there is enough memory.
Image handling is another thing though, storing them in memory
compressed/uncompressed, in main memory/graphic card memory... There are lots of
bugs about that and I suggest you see if you can contribute something there if
you have ideas.
Comment 53•23 years ago
|
||
Daniel: Of course if there is enough _physical_ memory, then by all means the
entire page should be loaded in memory. Otherwise, there should be some cut-off
where part of the page is left un-parsed until the user enters that location of
the page. First of all, paging continuously on a system will kill performance.
When the user gets partway down in the page and a new part has to be loaded will
only be a temporary jolt to the system. You can even start loading the second
part before the user gets to it so that there is no delay. I would much rather
see Mozilla be kinder on memory than try to increase performance on an already
doomed situation of a huge page. Worry about speed on the average page and worry
about memory on these huge pages. Its not worth bogging down a user's system
memory in order to get a little more speed.
Comment 54•23 years ago
|
||
When the page exceeds a pre-determined (based on system memory, etc) amount of
memory, the page should be scanned to determine if there is anything (such as
javascript) that should be parsed ahead of time because the part of the page
currently parse depends on it. Everything else should be left until the user
gets to it.
Comment 55•23 years ago
|
||
my programming skills are very minimalistic, im more like a hardware guy. But
HOW can it take so much memory at all ? the unconfirmed buglist is approx 850k
and takes 400megs to parse/render. sounds like a more basic problem than when
render what and when have it in memory or not.
Comment 56•23 years ago
|
||
Yes, that do sound excessive. If 850 KB simple HTML code uses 400 MB of RAM to
render, then thats a enormous regression. As can be seen in this bug's summary
the know memory usage for such data is much, much lower (19 MB for ~8000 rows /
3.2 MB HTML)
Comment 57•23 years ago
|
||
a funny thing i recognized during the page is rendered the win2k taskmanager
shows ~80megs, but once its DONE rendering the mem usagesa goes over 400megs. is
just taskmanager too slow to show the info just in time, or aint this a parsing
problem after all ?
Comment 58•23 years ago
|
||
yes, I'm seeing this after the fact increase in memory consumption too
Comment 59•23 years ago
|
||
I doubt Task Manager is missing it unless its frozen. Could this be some kind of
memory leak?
Comment 60•23 years ago
|
||
No the task manager is not frozen. And I always see this when loading various of
these image heavy pages.
Comment 61•23 years ago
|
||
im still using the unconfirmed bugs list from bugzilla as my personal test. only
image is the head and it still aquires so much memory(over 400megs) AFTER the
rendering is complete it seems
Do you have the Search sidebar tab enabled? (Is that still active if it's not
open?)
Comment 63•23 years ago
|
||
hmm, right completly turning off the sidebar takes me down to 110 megs mem
usage. so the side bar swallows over 300megs ???? yikes
Comment 64•23 years ago
|
||
I do not have the sidebar showing.
Comment 65•23 years ago
|
||
Just to add my comments here.
Using the BugZilla link my memory usage increases steadily till around 110 MB,
where the page is now fully parsed. It the decreases till its back to 24MB.
HOWEVER, Mozilla is now non-responsive. Clicking anywhere in the Mozilla window
kills it.
Will check with sidebar showing.
Comment 66•23 years ago
|
||
Correction on my last post.
Got different things this time.
As usual, page starts loading, memory rises. It peaked at 127MB RAM Usage, plus
80%CPU (Pentium 4 1.4GHZ). However, the page was NOT finished loading.
While the page was still loading, my mem usage went all over the place. It ended
up jumping between 19MB (Which is lower than Mozilla normally users), and 30MB,
while the page was still being parsed.
At the end of parsing, Mozilla is again unresponsive.
Dont know what that tells you, but the fact that it decreased hugely while still
rendering, I would imagine tells you something :)
Comment 67•23 years ago
|
||
anyone try with a nightly today ?
i just had a very special happening. via the bugzilla page i requested all bugs
containing "mail", this made mozilla user 600 megs swap and 80 megs ram, with
sidebar turned off !!!
then i opened one bug in a new window, real ram usage jumped to 94 megs.
scoll a bit up and down in the newly created window and you can watch mozilla
grabbing more and more memory, about 120 k for each full scroll.
close mozilla, leave quicklaunch on, mozilla drops down to 64megs ram/530megs
swap. during freeing memory windows warned twice that the app is not responding.
cant that be optimized in any way ?
Comment 68•23 years ago
|
||
on low spec systems this also results in crash and dataloss because of the
freezing ... and the bug would get more attention ;P
Comment 69•23 years ago
|
||
*** Bug 147115 has been marked as a duplicate of this bug. ***
Comment 70•23 years ago
|
||
*** Bug 149861 has been marked as a duplicate of this bug. ***
Comment 71•23 years ago
|
||
the behavior here starting at comment 45 is bug 120712, caused by checkin for
bug 77460.
this seems to be FIXED (by 87370) unless the FrameArena memory usage still needs
work (comment 37)
Comment 72•23 years ago
|
||
retargeting as 1.1a is already out
Target Milestone: mozilla1.1alpha → mozilla1.1beta
Comment 73•23 years ago
|
||
marking FIXED by bug 87370.
It seems unlikely that Attinasi is going to work on this anymore
If you are "seeing" this bug, it's bug 120712, which needs sr=
Status: ASSIGNED → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Comment 74•23 years ago
|
||
phoenix stats
about:blank 18944k
url: 39876k
file: 1444k
that appears to be an expansion factor of 14.
it's now a <1.5mb file that takes 20mb of memory.
Comment 75•23 years ago
|
||
sorry that was (phoenix) Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US;
rv:1.1b) Gecko/20020910
i just tested w/
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.2b) Gecko/20020921 Phoenix/0.1
current phoenix stats
about:blank 16852k
url: 43468k
file: 1444k
so it's now a <1.5mb file that takes 26mb of memory.
that appears to be an expansion factor of 18.
note that the query results in 3033 bugs and since i saved it using phoenix,
there was some random (ok, not random, because of multipart/replace) garbage
(the please wait page) at the top of the file:
--thisrandomstring◙Content-Type: text/html◙◙<!-- 1.0@bugzilla.or
g -->◙◙◙◙ ◙<html>◙ <head>◙ <title>Bugzilla is pondering you
r query</title>◙ </head>◙ <body>◙ <h1 style="margin-top: 20
%; text-align: center;">Please stand by ...</h1>◙◙◙ </body>◙</h
tml>◙--thisrandomstring◙Content-Type: text/html◙Set-Cookie: LAST
ORDER=bugs.bug_id ; path=/; expires=Sun, 30-Jun-2029 00:00:00 GM
T◙Set-Cookie: BUGLIST= ; path=/; expires=Sun, 30-Jun-2029 00:00:
00 GMT◙◙<!-- 1.0@bugzilla.org -->◙◙◙◙◙◙◙◙◙◙◙◙<!-- 1.0@bugzilla.o
rg -->◙◙◙◙◙◙◙◙<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Trans
steps:
1. run phoenix
2. load data:text/html,<a href=about:blank>a
3. right click a and select open in new window
4. close original window
5. checkpoint memory usage (taskmanager)
6. file>open file
7. checkpoint memory usage (taskmanager)
Comment 76•23 years ago
|
||
as for 'seeing' that other bug, phoenix doesn't have search, so i'm not affected
by that.
Updated•9 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•