[
https://issues.apache.org/jira/browse/ZOOKEEPER-4718?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yan Zhao updated ZOOKEEPER-4718:
--------------------------------
Description:
For each request, we will serialize it to a byte array.
In SerializeUtils#serializeRequest, before serializing the request, it always
allocates 32 byte array. It's unnecessary; we can allocate the byte array in
the catch code block.
{code:java}
public static byte[] serializeRequest(Request request) {
if (request == null || request.getHdr() == null) {
return null;
}
byte[] data = new byte[32];
try {
data = Util.marshallTxnEntry(request.getHdr(), request.getTxn(),
request.getTxnDigest());
} catch (IOException e) {
LOG.error("This really should be impossible", e);
}
return data;
}
{code}
was:
In SerializeUtils#serializeRequest, before serializing the request, it always
allocates 32 byte array. It's unnecessary; we can allocate the byte array in
the catch code block.
{code:java}
public static byte[] serializeRequest(Request request) {
if (request == null || request.getHdr() == null) {
return null;
}
byte[] data = new byte[32];
try {
data = Util.marshallTxnEntry(request.getHdr(), request.getTxn(),
request.getTxnDigest());
} catch (IOException e) {
LOG.error("This really should be impossible", e);
}
return data;
}
{code}
> Removing unnecessary heap memory allocation in serialization can help reduce
> GC pressure.
> -----------------------------------------------------------------------------------------
>
> Key: ZOOKEEPER-4718
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-4718
> Project: ZooKeeper
> Issue Type: Improvement
> Components: server
> Affects Versions: 3.8.1
> Reporter: Yan Zhao
> Priority: Major
> Labels: pull-request-available
> Fix For: 3.8.2
>
> Time Spent: 10m
> Remaining Estimate: 0h
>
> For each request, we will serialize it to a byte array.
> In SerializeUtils#serializeRequest, before serializing the request, it always
> allocates 32 byte array. It's unnecessary; we can allocate the byte array in
> the catch code block.
> {code:java}
> public static byte[] serializeRequest(Request request) {
> if (request == null || request.getHdr() == null) {
> return null;
> }
> byte[] data = new byte[32];
> try {
> data = Util.marshallTxnEntry(request.getHdr(), request.getTxn(),
> request.getTxnDigest());
> } catch (IOException e) {
> LOG.error("This really should be impossible", e);
> }
> return data;
> }
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)