JAVA优化技巧分享 让游戏更加的流畅
我的世界怎么样可以玩的更加流畅呢?怎么对游戏进行优化呢?相信很多小伙伴都很想知道吧,今天小编为大家带来的是我的世界游戏优化技巧,喜欢的小伙伴不要错 ...
在很多时候如果电脑配置过低的话,玩游戏并不流畅,怎么样可以让游戏玩的更舒适更流畅呢?相信很多小伙伴都还不知道吧,今天小编为大家带来的是我的世界优化技巧。希望可以帮助到各位玩家朋友。
我的世界 优化技巧:让你的Mc更为流畅,我们在启动房户端或者服务器中运行时,很多情况下运行不是那么流畅,这里给大家分享一个我的世界优化技巧,可以通过修改启动Java脚本的方式来达到,技巧教程如下。
相信很多人都知道,开服需要通过一个写着一串代码的启动脚本来启动服务器,启动客户端也同理,只是客户端帮你简化了这件事。现在就来教大家如何通过修改启动Java脚本来优化Minecraft客户/服务端。
以下是楼主的启动脚本(以Minecraft官方1.8服务端为例):
java -server -d64 -Xmx3550M -Xms3550M -Xss256k -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:+UseParNewGC -XX:+CMSIncrementalPacing -XX:+UseFastAccessorMethods -XX:+UseConcMarkSweepGC -XX:MaxGCPauseMillis=100 -XX:+CMSParallelRemarkEnabled -XX:ParallelGCThreads=20 -jar minecraft_server.1.8.jar nogui
参数说明
-server:一定要作为第一个参数,会使JVM启动速度变慢,但会显著提升JVM性能
-d64:强制使用64位JVM,如果不是64位系统和java请去掉
-Xmx3550m:设置JVM最大堆内存为3550M。
-Xms3550m:设置JVM初始堆内存为3550M。此值可以设置与-Xmx相同,以避免每次垃圾回收完成后JVM重新分配内存。
-Xss128k:设置每个线程的栈大小。JDK5.0以后每个线程栈大小为1M,之前每个线程栈大小为256K。应当根据应用的线程所需内存大小进行调整。在相同物理内存下,减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的,不能无限生成,经验值在3000~5000左右。需要注意的是:当这个值被设置的较大(例如>2MB)时将会在很大程度上降低系统的性能。
-Xmn2g:设置年轻代大小为2G。在整个堆内存大小确定的情况下,增大年轻代将会减小年老代,反之亦然。此值关系到JVM垃圾回收,对系统性能影响较大,官方推荐配置为整个堆大小的3/8。
-XX:NewSize=1024m:设置年轻代初始值为1024M。
-XX:MaxNewSize=1024m:设置年轻代最大值为1024M。
-XX:PermSize=256m:设置持久代初始值为256M。
-XX:MaxPermSize=256m:设置持久代最大值为256M。
-XX:NewRatio=4:设置年轻代(包括1个Eden和2个Survivor区)与年老代的比值。表示年轻代比年老代为1:4。
-XX:SurvivorRatio=4:设置年轻代中Eden区与Survivor区的比值。表示2个Survivor区(JVM堆内存年轻代中默认有2个大小相等的Survivor区)与1个Eden区的比值为2:4,即1个Survivor区占整个年轻代大小的1/6。
-XX:MaxTenuringThreshold=7:表示一个对象如果在Survivor区(救助空间)移动了7次还没有被垃圾回收就进入年老代。如果设置为0的话,则年轻代对象不经过Survivor区,直接进入年老代,对于需要大量常驻内存的应用,这样做可以提高效率。如果将此值设置为一个较大值,则年轻代对象会在Survivor区进行多次复制,这样可以增加对象在年轻代存活时间,增加对象在年轻代被垃圾回收的概率,减少Full GC的频率,这样做可以在某种程度上提高服务稳定性。
GC(垃圾回收)参数
Sun HotSpot JVM 通常使用的 GC 算法是分代回收。即把对象按生命周期不同分为年轻代和年老代。新的对象会先生成在Young Area,在几次 GC 以后,如果没有收集到,就会逐渐升级到Tenured Area。
Sun JVM 默认的回收器称为 serial collector ,即串行回收,我们也可以使用多线程并发回收来提高效率。需要注意的是,在单核的机器上,使用默认的回收器可能会更好。
-XX:+UseParNewGC:为年轻代对象使用并发回收,会缩短年轻代对象的回收时间
-XX:+UseConcMarkSweepGC:为年老代使用并发回收
-XX:+UseParallelGC:该收集器和 UseConcMarkSweepGC 是互相排斥的,为新生代使用并行清除,年老代使用单线程Mark-Sweep-Compact的垃圾收集器。
补充说明
其中的几个参数LZ忘记收集了必要的资料,没记错应该是减少服务器崩溃的几率。以上参数设置好后可以减少服务器崩溃次数和从底层提高server的效率。
参数跟单核心性能没有关系,其中几个参数是受核心线程的影响 例如-XX:ParallelGCThreads=20 如果是双核4线程,可以写到4-10 就可以了,如果双核双线程值可以写为2-5,只要不是单核服务器,里面大部分参数都有效。
另外,因为服务器和客户端都是基于JVM运行的,所以以上参数适用于游戏客户端,如在启动器参数中设置。具体怎么做根据启动器类型的不同略有出入。LZ使用的是MCLauncherBN里面有参数设置栏,表示很方便。
当然还有server.properties 的可视区块设置和最大玩家数设置,这两个我没有多大感觉。
这些启动参数不仅适用于官方服务器端的启动,同样适用于任何基于JDK6.0以后的服务器端(基本都是)bukkit sipgot 还是官方服务器。
JAVA优化技巧分享 让游戏更加的流畅的更多相关文章
- JavaScript 性能优化技巧分享
JavaScript 作为当前最为常见的直译式脚本语言,已经广泛应用于 Web 应用开发中.为了提高Web应用的性能,从 JavaScript 的性能优化方向入手,会是一个很好的选择. 本文从加载.上 ...
- Java优化技巧
过早的优化是万恶之源. 优化了的代码可读性变差,可改性可适应性变差,可维护性变差. 远离过度优化,优化是个无底洞,把主要精力放在代码逻辑上. 优化的代码是活在当下的,是严重依赖硬件的,不利于表达永恒的 ...
- MySql Sql 优化技巧分享
有天发现一个带inner join的sql 执行速度虽然不是很慢(0.1-0.2),但是没有达到理想速度.两个表关联,且关联的字段都是主键,查询的字段是唯一索引. sql如下: SELECT p_it ...
- 一个MySql Sql 优化技巧分享
有天发现一个带inner join的sql 执行速度虽然不是很慢(0.1-0.2),但是没有达到理想速度.两个表关联,且关联的字段都是主键,查询的字段是唯一索引. sql如下: SELECT p_it ...
- Java程序性能优化技巧
Java程序性能优化技巧 多线程.集合.网络编程.内存优化.缓冲..spring.设计模式.软件工程.编程思想 1.生成对象时,合理分配空间和大小new ArrayList(100); 2.优化for ...
- JAVA中的优化技巧(适用Android)
最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Ja ...
- Unity MMORPG游戏优化经验分享
https://mp.weixin.qq.com/s/thGF2WVUkIQYQDrz5DISxA 今天由Unity技术支持工程师高岩,根据实际的技术支持工作经验积累,分享如何对Unity MMORP ...
- Unity UI性能优化技巧
本文将介绍一些提升Unity UI性能的技巧.更多优化技巧,可以观看Unity工程师Ian Dundore在Unite Europe 2017的演讲<使用Unity性能提升技巧>. 1.划 ...
- [翻译] C# 8.0 新特性 Redis基本使用及百亿数据量中的使用技巧分享(附视频地址及观看指南) 【由浅至深】redis 实现发布订阅的几种方式 .NET Core开发者的福音之玩转Redis的又一傻瓜式神器推荐
[翻译] C# 8.0 新特性 2018-11-13 17:04 by Rwing, 1179 阅读, 24 评论, 收藏, 编辑 原文: Building C# 8.0[译注:原文主标题如此,但内容 ...
随机推荐
- ASP.NET动态添加用户控件的方法
本文实例讲述了ASP.NET动态添加用户控件的方法.分享给大家供大家参考.具体实现方法如下: 为了让用户控件能ASP.NET页面实现动态添加,首先写一个接口IGetUCable,这个接口有一个函数,返 ...
- Git高级操作
本文是在Git操作指南基础上衍生出来的高级操作,如果你对git不是很熟悉,建议你先阅读Git操作指南. 一.忽略提交特定文件 如果你不想让一些文件上传到git仓库中,可以让Git忽略特定文件或是目录, ...
- 改善C#程序的建议4:C#中标准Dispose模式的实现
http://www.cnblogs.com/luminji/archive/2011/03/29/1997812.html 需要明确一下C#程序(或者说.NET)中的资源.简单的说来,C#中的每一个 ...
- Emulator Error: Could not load OpenGLES emulation library: Could not load DLL!
Copy the file below from SDK\tools\lib to SDK\tools. libEGL_translator.dlllibGLES_CM_translator.dlll ...
- conn.setAutoCommit(false)数据回滚设置
前言:介绍一点爱混淆的概念. 1.mysql中默认 autocommit=1:事物自动提交. 可通过 select @@autocommit;查看 但是是设置事务自动提交模式为set autocomm ...
- MongoDB(二)-- Java API 实现增删改查
一.下载jar包 http://central.maven.org/maven2/org/mongodb/mongo-java-driver/ 二.代码实现 package com.xbq.mongo ...
- ELK5.X使用X-Pack配置密码
一.前言 前面使用ELK5.X+logback搭建日志平台,但是,当访问kibana 时,直接就可以访问了,如果设置登录名和密码,是不是更好呢?答案是肯定的,这里使用X-Pack来配置登录名和密码. ...
- linux发布项目
1.右击项目 export --->war file 上传到linux服务器 2.解压 jiar -xvf xx.war 3.移动到 tomcat webapps文件中 4.启动tomcat 访 ...
- 有道云笔记同步IT笔试面试资源
有道云笔记同步资源 放在手机上ipad或者电脑上看..特别方便...精心整理..暂时只有c++的..希望大家喜欢 暂时只扒了一些c++的..java的随后扒 主要都是取自<程序员面试笔试宝典&g ...
- activemq 实战 一
This chapter covers Introduction to the use case for each of the book examples Use of Maven for ...