That's a very meta comment.
Sure you can figure out if a texture is used in the current visible set (like in a certain part of a game level). But then it starts to get tricky!
Any concrete ideas how to determine which parts (= memory pages) of a texture are actually needed to draw the scene?
If you don't know, you're going to waste a lot of I/O and memory capacity for something you don't need in the first place.
Remember a texture... :
1) ... has multiple mipmap [1] levels. Say you have 1024x1024 texture. You'll also need 512x512, 256x256, 128x128... etc versions. Depending on the triangle orientation [2], GPU might need some spatial areas (not all!) from any of those levels. 1024x1024 for the corner that's near camera and 128x128 for the faraway portion.
2) ... has spatial data order. It's not in row-major order (think scanlines), but in some space filling curve order (like Z-order curve [3]). This helps caching AND paging schemes -- other accesses are spatial and very likely to be nearby memory addresses in the texture.
3) ... is rarely drawn alone. There are often multiple objects using same texture. Sometimes that's true even if actual visible portion is completely different, like texture atlases [4]. This makes it non-trivial to consider points 1 and 2.
4) ... is sometimes huge. Uncompressed 4096x4096 float32 RGBA texture takes 256 MB (4096 * 4096 * 4 * 4) memory just for the first mipmap level. All (traditional "pyramid" type) mipmap levels together would take about 341 MB.
So how are you going to determine which memory ranges of the texture really need to be in the memory?
[1]: https://en.wikipedia.org/wiki/Mipmap
[2]: https://en.wikipedia.org/wiki/Anisotropic_filtering
[3]: https://en.wikipedia.org/wiki/Z-order_curve
[4]: https://en.wikipedia.org/wiki/Texture_atlas