How about a more efficient search strategy?

    for x from 999 to 121:  // 121*121 is palindrome, don't go lower that that
      for y from 999 to x:  // only search upper triangle of this matrix
        z=x*y
        if z > maxPalindromeNumSoFar:  
          // only check palindrome-ism if z is bigger
          check z for palindrome-ism and replace if bigger

And add a bit of domain knowledge. 444,444 = 481*924, so further constrain the search range:

    for x from 999 to 481:
      for y from 999 to max(x, 444444/x):

There's also a bit of number theory about palindromic numbers have factors of 11 or 101, not sure how best to integrate that info...