|
Post by tbr on Jun 16, 2019 12:25:25 GMT -6
Got another of those "Errors in ... Procedure" events at the end of a long and large battle. Curious that this error message tells me "out of memory" when only 24% of my RAM is ion use. Nevertheless these 843MB is almost 20 times the memory usage I have seen RTW2 take since I have been doing the occasional peek at the resource usage.
|
|
|
Post by tbr on Jun 16, 2019 12:29:17 GMT -6
I reloaded the savegame after this error, memory usage is 35MB but all contact reports are gone. Am currently running out the scenario.
|
|
|
Post by tbr on Jun 16, 2019 12:31:38 GMT -6
Now got the Show Result Screen Procedure Error, as usual in these cases:
|
|
|
Post by rimbecano on Jun 16, 2019 15:39:04 GMT -6
Got another of those "Errors in ... Procedure" events at the end of a long and large battle. Curious that this error message tells me "out of memory" when only 24% of my RAM is ion use. This likely has to do with how modern operating systems allocate memory to processes: Each byte of memory on the system is numbered, the first byte is byte 0, the next is byte 1, and so on up to the number of bytes of memory that you have. On older computers, a program would ask the OS for five bytes of memory, the OS would find five free bytes at address 12345, and would tell the program "you have the five bytes beginning at byte number 12345". On modern computers the CPU has features that allow the OS to give each program its own set of memory numbers. So byte number 12345 for Word is not the same as byte number byte number 12345 for RTW (12345 for Word might be system byte number 4012345, and byte number 12345 for RTW might be system byte number 6012345). And for a given program, a given byte number might not actually have any actual RAM assigned to it yet. If a program asks for five bytes, it's generally more efficient for the OS to tell it immediately "you have five bytes beginning at 12345", but not to actually assign any RAM to address 12345 for that program until the program actually tries to use address 12345. So the memory usage of a Perham can mean two things (more, actually, but two will do for the sake of clarity). It can mean "How much memory has the program asked for?", or it can mean "How much memory has the OS actually assigned to the program as a result of the program trying to use memory that it had previously asked for?". Some types of bugs will cause a program to ask for memory that it never uses. I believe task manager only shows the amount that has actually been assigned. A 32-bit program, like RTW, only uses 32-bit numbers (equivalent to a bit less than 10 digits) to address memory, so it can only be given 4 billion bytes of memory (if it were exactly 10 digits, it would be 10 billion: 1 followed by 10 zeroes). If Windows is 32-bit as well, it reserves the top 2 billion bytes of each program's address space for its own use. A 64-bit program uses ~20 digit numbers, and so can address a *lot* more memory. If 64-bit Windows is running a 32-bit program, it doesn't reserve the top 2 billion bytes of the program's 4 billion bytes, because it can use 20-digit adresses, while the program can only use 10 digits, so there are plenty of addresses that the OS can use and the program can't. However, many 32-bit programs aren't aware of this and only use the lower 2 billion bytes. So if a bug causes a 32-bit program to keep asking for memory until it has asked for all of the 2 or 4 billion bytes it has available, the OS will tell it that it has no more memory, because there are no unique, unused 10-digit numbers to label any more memory that the OS might give to the program, even though the OS itself has plenty of memory left (to give to other programs), and the program would have plenty of memory left if it actually used the memory it has already asked for instead of asking for more without using what it has. As an analogy, imagine if the driver's license office only used one digit numbers when they told you to take a number and wait to be called: If they did that, they couldn't allow more than 10 people into the office at a time, even if they had a thousand seats in the waiting room, because if they let more than 10 people in, at least two would have the same number, so when that number was called, two people would come up to the clerk, and the clerk would only be able to serve one of them, and the other person would be angry. So they'd have plenty of "memory" (seats in waiting room), but they'd also be "out of memory" (no more numbers to give to customers conning into the waiting room).
|
|