No description
Find a file
Aikar 84673141a0
Optimize NibbleArray to use pooled buffers
Massively reduces memory allocation of 2048 byte buffers by using
an object pool for these.

Uses lots of advanced new capabilities of the Paper codebase :)

Targets 3072 * 8 buffers per 1GB of heap memory up to a max consideration
of 6GB of heap (any more over 6GB won't give more nibble pool)

You can control the 3072 number by setting -DPaper.nibbleBucketSize=2048

Remember this number is * 8 then * heap memory in GB

That is 98304 objects for 4GB of memory, at 2064 bytes roughly, meaning 194MB

You may also control max number of pooled objects directly instead of any
dynamic calculation using -DPaper.maxNibblePoolSize=1024000

While this will use more old generation by a tad bit, allocation rate will drop
significantly, causing less young generation GC's.

This commit has gone through extensive testing for over a day and confident
it no longer has any issues with light corruption.
2020-05-16 22:24:36 -04:00
.github/ISSUE_TEMPLATE [CI-SKIP] Update Issue template 2018-09-26 17:22:20 -04:00
licenses [CI-SKIP] Clarify project licensing 2018-03-06 20:41:03 -05:00
Paper-MojangAPI Rename to AsyncPlayerSendSuggestionsEvent to be consistent in naming 2020-05-02 15:29:03 -04:00
removed Remove some old removed 1.14 patches that are never going to be needed (fixed/already applied) 2020-04-02 00:42:15 -04:00
scripts Speed up rebuilding patches and reduce diff 2020-05-06 05:31:08 -04:00
Spigot-API-Patches Potential bed api (#3339) 2020-05-11 00:19:04 -04:00
Spigot-Server-Patches Optimize NibbleArray to use pooled buffers 2020-05-16 22:24:36 -04:00
work Updated Upstream (Bukkit/CraftBukkit/Spigot) 2020-05-12 01:27:07 -04:00
.editorconfig [CI-SKIP] add .editorconfig for base code style settings 2018-08-07 01:14:22 -04:00
.gitignore Hey vscode, get your files outta my repo 2019-06-08 15:38:10 -05:00
.gitmodules Cleanup and restructure the project 2016-04-01 23:15:41 -05:00
.travis.yml [CI-SKIP] Have travis ensure openjdk11 builds run 2018-10-24 16:26:47 -04:00
CONTRIBUTING.md [CI-SKIP] Passage outdated (#2776) 2020-01-09 19:43:46 -06:00
LICENSE.md Add API MinecraftServer#isStopping (#3129) 2020-04-11 01:51:35 -04:00
paper Updated Upstream (Bukkit/CraftBukkit) 2020-05-01 18:03:57 -04:00
pom.xml Implement Brigadier Mojang API 2020-04-27 01:42:12 -04:00
README.md [CI-SKIP] Update build badge in README to use proper job 2020-02-08 17:58:39 -06:00

Paper Build Status

High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.

Support and Project Discussion:

How To (Server Admins)

Paperclip is a jar file that you can download and run just like a normal jar file.

Download Paper from our downloads page.

Run the Paperclip jar directly from your server. Just like old times

How To (Plugin Developers)

  • See our API patches here
  • See upcoming, pending, and recently added API here
  • Paper API javadocs here: papermc.io/javadocs
  • Maven Repo (for paper-api):
<repository>
    <id>papermc</id>
    <url>https://papermc.io/repo/repository/maven-public/</url>
</repository>
  • Artifact Information:
<dependency>
    <groupId>com.destroystokyo.paper</groupId>
    <artifactId>paper-api</artifactId>
    <version>1.15.2-R0.1-SNAPSHOT</version>
    <scope>provided</scope>
 </dependency>

How To (Compiling Jar From Source)

To compile Paper, you need JDK 8, maven, and an internet connection.

Clone this repo, run ./paper jar from bash, get files.

How To (Pull Request)

See Contributing

Special Thanks To:

YourKit-Logo

YourKit, makers of the outstanding java profiler, support open source projects of all kinds with their full featured Java and .NET application profilers. We thank them for granting Paper an OSS license so that we can make our software the best it can be.