I wonder that one class instance would need so much memory.
There's this:
byte _red;
byte _green;
byte _blue;
byte _dim;
byte _red_memory;
byte _green_memory;
byte _blue_memory;
byte _dim_memory;
float _steps;
int _addr_red;
int _addr_green;
int _addr_blue;
int _addr_dim;
int _addr_mode;
float _stepping_red;
float _stepping_green;
float _stepping_blue;
byte _queue_red[MAX_FADE_ELEMENTS];
byte _queue_green[MAX_FADE_ELEMENTS];
byte _queue_blue[MAX_FADE_ELEMENTS];
float _queue_time[MAX_FADE_ELEMENTS];
int _queue_counter;
int _q;
int _step_counter;
IPAddress remote_ip;
uint16_t remote_port;
and this:
void _DMXNet_send(uint16_t addr,uint8_t data);
DMX_RGB(char* ip, uint16_t port,int addr_red, int addr_green, int addr_blue, int addr_dim,int addr_mode);
void set_rgb(byte r, byte g, byte b);
void set_red(byte r);
void set_green(byte g);
void set_blue(byte b);
void set_dim(byte d);
int get_steps(void);
void fade_to(byte r, byte g, byte b, float time);
void flash(byte flashes, int min_time, int max_time, int fade_time);
void worker(void);
void init(int cmd);
That's not a trivial list of data fields or a trivial list of functions. For EACH instance.