POC: Improve JDBC driver performance using ByteBufferManager for TDS packet handling#2671
Draft
POC: Improve JDBC driver performance using ByteBufferManager for TDS packet handling#2671
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2671 +/- ##
============================================
+ Coverage 51.62% 51.87% +0.24%
- Complexity 4006 4045 +39
============================================
Files 147 149 +2
Lines 33804 33836 +32
Branches 5652 5654 +2
============================================
+ Hits 17453 17553 +100
+ Misses 13888 13811 -77
- Partials 2463 2472 +9 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
David-Engel
reviewed
Jun 19, 2025
mmimica
reviewed
Jul 31, 2025
| public void release(byte[] buffer) { | ||
| if (buffer.length == bufferSize) { | ||
| pool.offer(buffer); | ||
| Arrays.fill(buffer, (byte) 0); // Clear the array for re-use |
Contributor
There was a problem hiding this comment.
You need to clear the buffer first, then put it pool. You lose ownership once added to pool and another thread might take the buffer, you can't touch it any more.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This POC introduces a ByteBufferManager and BufferPool in the JDBC driver to optimize memory usage during TDS packet processing.
Test Results – CRD App
JDBC Driver | Avg. Heap Usage | Execution Time (ms)Dataset: 100 Million Records · 601 Columns
Metric Comparison: Average Heap Usage & Execution Time
mssql-jdbc (Before Optimization) | 311.34 MB | 5,017,218
mssql-jdbc (After Optimization) | 309.11 MB | 4,944,792
jTDS | 374.64 MB | 3,499,575