[DUDA] Que significa esto y como solucionarlo?
#1

Que significa esto?

Header size: 1536 bytes
Code size: 3544 bytes
Data size: 5892 bytes
Stack/heap size: 16384 bytes; estimated max. usage=10318 cells (41272 bytes)
Total requirements: 27356 bytes

como puedo solucionarlo?

gracias
Reply
#2

Quote:
Originally Posted by estil31
Посмотреть сообщение
Que significa esto?

Header size: 1536 bytes
Code size: 3544 bytes
Data size: 5892 bytes
Stack/heap size: 16384 bytes; estimated max. usage=10318 cells (41272 bytes)
Total requirements: 27356 bytes

como puedo solucionarlo?

gracias
En dуnde te apareciу eso?
Reply
#3

Al copilar sobretodo GM de Rol, sale al final.
No es malo, no te preocupes por ello, pero ahora mismo no me acuerdo exactamente lo que significaba...
Reply
#4

eso da informacion sobre el taaсo del archivo.
basicamente para no complicarte la vida, significa q definiste arrays mas grandes de lo q necesitabas. pero no es un error.
Reply
#5

Se puede evitar en los RP?
Reply
#6

Quote:
Originally Posted by SuperMarioRol
Посмотреть сообщение
Se puede evitar en los RP?
definis los arrays en menos tamaсos
Reply
#7

Significa que estas usando mбs celdas de las que debнas, y con ello tu servidor irб un poco lento...
Reply
#8

Achica el tamaсo de todos tus strings.
Reply
#9

Acб estб bastante bien explicado, pero en ingles (vayan a la parte que dice Stack usage):

https://sampforum.blast.hk/showthread.php?tid=55261

Cuando un script en PAWN se ejecuta, se reserva una cierta cantidad de memoria utilizada solamente para guardar datos temporales cada vez que se llama a una funciуn, llamado stack (por defecto, es 16384 bytes).
El mбs tнpico caso en el que esta cantidad de memoria se excede, es cuando se usan arrays muy grandes, dentro de una misma funciуn, o cuando ocurre esto y ademбs se llaman las funciones recursivamente (es decir, que se hacen llamadas a la misma funciуn desde dentro de ellas).
Para tener como referencia, cada 'cell' (cada espacio de una array, o cada variable individual) se toma un espacio de 4 bytes. Una array de 256 espacios, por ejemplo, consume 1024 bytes. Para exceder el tamaсo del stack, se deberнan usar alrededor de 16 arrays de 256 celdas; ya sea dentro de una misma funciуn, o dentro de varias funciones que se llaman entre sн.
El espacio usado dentro del stack se va acumulando progresivamente cada vez que se llama a una funciуn, y se va liberando cada vez que una funciуn termina. Por eso, volviendo al ejemplo anterior, si bien es dificil encontrar 16 arrays de 256 celdas dentro de una funciуn, es probable que haya muchas de estas en varias funciones que se llaman entre sн, y se termine acumulando esta cantidad de espacio en total.
Si el tamaсo del stack se excede, la informaciуn extra que se debe escribir sobreescribe a la vieja. En la mayorнa de los casos va a provocar que el server crashee. En caso de que no lo haga, se van a sobreescribir los datos (por ejemplo, cuales eran los contenidos de la array de otra funciуn), o hasta se podrнan sobreescribir datos que digan quй funciуn llamу a cual, haciendo que el script vuelva a un punto indeterminado cuando termine una funciуn (aunque es medio raro que pase esto, deberнa ser muy especнfico, hasta forzado creo yo).

La soluciуn a esto, y la mбs recomendada, es intentar buscar por quй ocurre el exceso de memoria, y solucionarlo (en la mayorнa de los casos, esto es reemplazar los 256 por nъmeros mбs chicos).
En caso de que no se pueda, o no se sepa como, o algъn otro inconveniente, se puede recurrir a incrementar el tamaсo asignado por PAWN para el stack (el tan famoso #pragma dynamic). La contra de esto es que va a consumir algo mбs de memoria RAM, pero estamos hablando de un par de kilobytes, una cantidad casi irrelevante para servidores con un par de gigabytes de RAM. Sin embargo, la primera opciуn es recomendada no solo por la RAM salvada, sino tambiйn por el procesamiento salvado en la mayorнa de los casos donde se opera con la array completa, lo cual puede tener un GRAN impacto en la CPU si se usan arrays mбs grandes de lo debido.

En cualquiera de los casos, siempre es preferible recurrir a #pragma dynamic que dejar el script como estб.
Reply
#10

Quote:
Originally Posted by Zamaroht
Посмотреть сообщение
Acб estб bastante bien explicado, pero en ingles (vayan a la parte que dice Stack usage):

https://sampforum.blast.hk/showthread.php?tid=55261

Cuando un script en PAWN se ejecuta, se reserva una cierta cantidad de memoria utilizada solamente para guardar datos temporales cada vez que se llama a una funciуn, llamado stack (por defecto, es 16384 bytes).
El mбs tнpico caso en el que esta cantidad de memoria se excede, es cuando se usan arrays muy grandes, dentro de una misma funciуn, o cuando ocurre esto y ademбs se llaman las funciones recursivamente (es decir, que se hacen llamadas a la misma funciуn desde dentro de ellas).
Para tener como referencia, cada 'cell' (cada espacio de una array, o cada variable individual) se toma un espacio de 4 bytes. Una array de 256 espacios, por ejemplo, consume 1024 bytes. Para exceder el tamaсo del stack, se deberнan usar alrededor de 16 arrays de 256 celdas; ya sea dentro de una misma funciуn, o dentro de varias funciones que se llaman entre sн.
El espacio usado dentro del stack se va acumulando progresivamente cada vez que se llama a una funciуn, y se va liberando cada vez que una funciуn termina. Por eso, volviendo al ejemplo anterior, si bien es dificil encontrar 16 arrays de 256 celdas dentro de una funciуn, es probable que haya muchas de estas en varias funciones que se llaman entre sн, y se termine acumulando esta cantidad de espacio en total.
Si el tamaсo del stack se excede, la informaciуn extra que se debe escribir sobreescribe a la vieja. En la mayorнa de los casos va a provocar que el server crashee. En caso de que no lo haga, se van a sobreescribir los datos (por ejemplo, cuales eran los contenidos de la array de otra funciуn), o hasta se podrнan sobreescribir datos que digan quй funciуn llamу a cual, haciendo que el script vuelva a un punto indeterminado cuando termine una funciуn (aunque es medio raro que pase esto, deberнa ser muy especнfico, hasta forzado creo yo).

La soluciуn a esto, y la mбs recomendada, es intentar buscar por quй ocurre el exceso de memoria, y solucionarlo (en la mayorнa de los casos, esto es reemplazar los 256 por nъmeros mбs chicos).
En caso de que no se pueda, o no se sepa como, o algъn otro inconveniente, se puede recurrir a incrementar el tamaсo asignado por PAWN para el stack (el tan famoso #pragma dynamic). La contra de esto es que va a consumir algo mбs de memoria RAM, pero estamos hablando de un par de kilobytes, una cantidad casi irrelevante para servidores con un par de gigabytes de RAM. Sin embargo, la primera opciуn es recomendada no solo por la RAM salvada, sino tambiйn por el procesamiento salvado en la mayorнa de los casos donde se opera con la array completa, lo cual puede tener un GRAN impacto en la CPU si se usan arrays mбs grandes de lo debido.

En cualquiera de los casos, siempre es preferible recurrir a #pragma dynamic que dejar el script como estб.
Muy buena la explicaciуn, tambiйn se puede hacer que el compilador muestre siempre cuanta memoria usamos con "heapsize()" (creo, en este momento no tengo las cosas de script)
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)