Define “cannot play stable FPS” - how many FPS do you get and at which resolution? If you play unmodded, use the default heap size (-Xmx2g) and see how many FPS you get with the default resource pack.
Define “cannot play stable FPS” - how many FPS do you get and at which resolution? If you play unmodded, use the default heap size (-Xmx2g) and see how many FPS you get with the default resource pack.
Stable FPS, meaning, It doesn't go up and down. I don't play modded singleplayer but I have optifine in 1.8.9, I also put -xmx2g in my installer settings (2g ram allocated) and I don't have a texture pack on, it just there... It doesn't fix anything.
Newer versions are very badly optimized - there is even a report on the bug tracker about major FPS issues in 1.15 (and 1.16); ironically, this always seems to happen after a major rewrite of the rendering engine, which last occurred in 1.8 (in that case they actually told you to get a new computer to fix the issue):
Server performance is also quite bad - according to your screenshot the server can barely keep up with 50 ms ticks (the maximum allowed for 20 TPS). For comparison, I get close to 400 FPS and 3 ms server tick time in my own mod based on 1.6.4 at maximum settings (Fancy and 16 chunk render distance) - in one of the most extreme situations the game can ever handle (short of making a Superflat world out of leaves to the height limit); memory usage is also vastly lower, just 256 MB used out of 389 MB allocated out of a maximum of 499 (512) MB (I suspect that modern versions are significantly limited by system memory bandwidth due to their extreme rate of object allocation; the reason it is advised not to allocate more memory than needed is because it will cause the JVM to use more and garbage collections will also take longer; you have 4x the amount allocated over used):
That said, in my experience OpenGL itself is the biggest limiting factor in performance - it takes about 25 ms to render a chunk section full of leaves on Fancy, of which 90% of the time is spent on the actual OpenGL draw call; this is enough to drop FPS down to 40 by itself (though only with active chunk updates); for comparison, Fast takes about 3 ms, which is still a 50% drop in framerate at 333 FPS (3 ms to actually draw to the screen plus 3 ms for a chunk update); newer versions are supposed to have solved this issue by moving chunk updates to another thread but according to the following report they still cause lag spikes (it is curious that newer versions no longer show chunk updates, at least, I can't see anything in your screenshot that would be chunk updates):
Note that chunk updates will only affect performance while moving, or having active redstone, spreading water, etc. Otherwise you can try turning down settings; for example, I get about 1000 FPS at 8 chunk render distance, which is the single biggest factor that affects steady-state performance (for example, I only see an increase of around 20% on Fast vs Fancy leaves. However, as mentioned above this can significantly reduce chunk update lag, if not by 8-fold under more typical situations, especially with the smaller trees in vanilla. Other settings, like smooth lighting and biome blend, only affect chunk update time).
Also, comments on the first report linked above indicate that entities are much more resource-demanding than before (in any case they are quite expensive to render since their model is re-rendered every frame, as opposed to chunks which are compiled into static lists which are only re-rendered when a block in them changes). You do not appear to have that many entities though (although the "E:" number is not a reliable indicator of loaded entities, especially at higher render distances; in my screenshot it is 117 but the "mob counts" below show 377 mobs loaded. This is because the "E:" number is client-side and the server only sends entities to the client if they are within 80 blocks for most types, while my "mob counts" are server-side. Either way, the number actually being rendered, 9 in your case, is more important than the total).
I have a High End PC rig (Gtx 1050 Ti, AMD A8 7680 quad core, 6 GB ram) and I cannot play stable FPS Even If I installed optifine.
not only In single player (1.15.2) but also in Multiplayer ( 1.8.9) .
these are the only options that I have left. ( I think )
1. Overclocking my CPU
2. Buying more rams?
3. Buying a hard disk drive to have more space
More RAM does not mean more FPS, it's a myth. Same with more hard drive space.
Minecraft is a poorly coded game, but post a screenshot with F3 enabled and your JVM arguments.
Define “cannot play stable FPS” - how many FPS do you get and at which resolution? If you play unmodded, use the default heap size (-Xmx2g) and see how many FPS you get with the default resource pack.
Stable FPS, meaning, It doesn't go up and down. I don't play modded singleplayer but I have optifine in 1.8.9, I also put -xmx2g in my installer settings (2g ram allocated) and I don't have a texture pack on, it just there... It doesn't fix anything.
Update nvidia drivers.
And bring the -Xmx back to 2GB.
Ill try that
I just did that but It would not make any huge difference
Newer versions are very badly optimized - there is even a report on the bug tracker about major FPS issues in 1.15 (and 1.16); ironically, this always seems to happen after a major rewrite of the rendering engine, which last occurred in 1.8 (in that case they actually told you to get a new computer to fix the issue):
MC-164123 Poor FPS performance with new rendering engine
Server performance is also quite bad - according to your screenshot the server can barely keep up with 50 ms ticks (the maximum allowed for 20 TPS). For comparison, I get close to 400 FPS and 3 ms server tick time in my own mod based on 1.6.4 at maximum settings (Fancy and 16 chunk render distance) - in one of the most extreme situations the game can ever handle (short of making a Superflat world out of leaves to the height limit); memory usage is also vastly lower, just 256 MB used out of 389 MB allocated out of a maximum of 499 (512) MB (I suspect that modern versions are significantly limited by system memory bandwidth due to their extreme rate of object allocation; the reason it is advised not to allocate more memory than needed is because it will cause the JVM to use more and garbage collections will also take longer; you have 4x the amount allocated over used):
That said, in my experience OpenGL itself is the biggest limiting factor in performance - it takes about 25 ms to render a chunk section full of leaves on Fancy, of which 90% of the time is spent on the actual OpenGL draw call; this is enough to drop FPS down to 40 by itself (though only with active chunk updates); for comparison, Fast takes about 3 ms, which is still a 50% drop in framerate at 333 FPS (3 ms to actually draw to the screen plus 3 ms for a chunk update); newer versions are supposed to have solved this issue by moving chunk updates to another thread but according to the following report they still cause lag spikes (it is curious that newer versions no longer show chunk updates, at least, I can't see anything in your screenshot that would be chunk updates):
MC-123584 Updating blocks creates lag spikes proportional to geometry in chunk section
Note that chunk updates will only affect performance while moving, or having active redstone, spreading water, etc. Otherwise you can try turning down settings; for example, I get about 1000 FPS at 8 chunk render distance, which is the single biggest factor that affects steady-state performance (for example, I only see an increase of around 20% on Fast vs Fancy leaves. However, as mentioned above this can significantly reduce chunk update lag, if not by 8-fold under more typical situations, especially with the smaller trees in vanilla. Other settings, like smooth lighting and biome blend, only affect chunk update time).
Also, comments on the first report linked above indicate that entities are much more resource-demanding than before (in any case they are quite expensive to render since their model is re-rendered every frame, as opposed to chunks which are compiled into static lists which are only re-rendered when a block in them changes). You do not appear to have that many entities though (although the "E:" number is not a reliable indicator of loaded entities, especially at higher render distances; in my screenshot it is 117 but the "mob counts" below show 377 mobs loaded. This is because the "E:" number is client-side and the server only sends entities to the client if they are within 80 blocks for most types, while my "mob counts" are server-side. Either way, the number actually being rendered, 9 in your case, is more important than the total).
TheMasterCaver's First World - possibly the most caved-out world in Minecraft history - includes world download.
TheMasterCaver's World - my own version of Minecraft largely based on my views of how the game should have evolved since 1.6.4.
Why do I still play in 1.6.4?