On one hand, on addrman.h/.cpp I can see that:
// the maximum percentage of nodes to return in a getaddr call
#define ADDRMAN_GETADDR_MAX_PCT 23
// the maximum number of nodes to return in a getaddr call
#define ADDRMAN_GETADDR_MAX 2500
[...]
int nNodes = ADDRMAN_GETADDR_MAX_PCT*vRandom.size()/100;
if (nNodes > ADDRMAN_GETADDR_MAX)
nNodes = ADDRMAN_GETADDR_MAX;
So it seems that the number of addresses sent is the smaller of the two conditions, namely, 23% of the (active known) nodes or 2500 nodes.
But on the other hand, from the bitcoin wiki https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery:
...and...
So, why does a node try to send 2500 addresses if the receiver is going to discard them? Why not sending at most 1000 addresses?