This is an automated email from the ASF dual-hosted git repository.

nicoloboschi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git


The following commit(s) were added to refs/heads/master by this push:
     new d4eba6295 Use netty maxDirectMemory instead of DirectMemoryUtils
d4eba6295 is described below

commit d4eba629504930ca6179dee220e075b489c193a7
Author: ZhangJian He <[email protected]>
AuthorDate: Wed Apr 6 16:13:13 2022 +0800

    Use netty maxDirectMemory instead of DirectMemoryUtils
    
    ### Motivation
    
    Our `DirectMemoryUtils` has huge limit, it can't work well with other jvm. 
The Netty `PlatformDependent.maxDirectMemory();` is more generic.
    
    ### Changes
    Use `PlatformDependent.maxDirectMemory();` instead of `DirectMemoryUtils`
    
    Reviewers: Enrico Olivelli <[email protected]>, Andrey Yegorov <None>, 
Matteo Merli <[email protected]>, Nicolò Boschi <[email protected]>
    
    This closes #2989 from Shoothzj/direct-memory
---
 .../bookkeeper/bookie/IndexInMemPageMgr.java       |  6 ++-
 .../apache/bookkeeper/util/DirectMemoryUtils.java  | 60 ----------------------
 2 files changed, 4 insertions(+), 62 deletions(-)

diff --git 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/IndexInMemPageMgr.java
 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/IndexInMemPageMgr.java
index 2a360205e..cb75d7e71 100644
--- 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/IndexInMemPageMgr.java
+++ 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/bookie/IndexInMemPageMgr.java
@@ -27,6 +27,9 @@ import static 
org.apache.bookkeeper.bookie.BookKeeperServerStats.LEDGER_CACHE_RE
 import static 
org.apache.bookkeeper.bookie.BookKeeperServerStats.NUM_INDEX_PAGES;
 
 import com.google.common.base.Stopwatch;
+//CHECKSTYLE.OFF: IllegalImport
+import io.netty.util.internal.PlatformDependent;
+//CHECKSTYLE.ON: IllegalImport
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -47,7 +50,6 @@ import org.apache.bookkeeper.stats.Counter;
 import org.apache.bookkeeper.stats.Gauge;
 import org.apache.bookkeeper.stats.OpStatsLogger;
 import org.apache.bookkeeper.stats.StatsLogger;
-import org.apache.bookkeeper.util.DirectMemoryUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -350,7 +352,7 @@ class IndexInMemPageMgr {
         this.indexPersistenceManager = indexPersistenceManager;
         this.pageMapAndList = new InMemPageCollection(statsLogger);
 
-        long maxDirectMemory = DirectMemoryUtils.maxDirectMemory();
+        long maxDirectMemory = PlatformDependent.estimateMaxDirectMemory();
 
         if (conf.getPageLimit() <= 0) {
             // By default, allocate a third of the direct memory to the page 
cache
diff --git 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/DirectMemoryUtils.java
 
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/DirectMemoryUtils.java
deleted file mode 100644
index 8a5362ade..000000000
--- 
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/util/DirectMemoryUtils.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-package org.apache.bookkeeper.util;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-import java.lang.reflect.Method;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * DirectMemory Utility.
- */
-public class DirectMemoryUtils {
-    /**
-     * Returns the max configured size of direct memory for the JVM process.
-     *
-     * <p>Direct memory can be specified with the flag 
<code>-XX:MaxDirectMemorySize=8G</code> on the command line.
-     * If not specified, the default value will be set to the max size of the 
JVM heap.
-     */
-    public static long maxDirectMemory() {
-        try {
-
-            Class<?> vm = Class.forName("sun.misc.VM");
-            Method maxDirectMemory = vm.getDeclaredMethod("maxDirectMemory");
-            Object result = maxDirectMemory.invoke(null, (Object[]) null);
-
-            checkNotNull(result);
-            checkArgument(result instanceof Long);
-            return (Long) result;
-        } catch (Exception e) {
-            if (LOG.isDebugEnabled()) {
-                LOG.debug("Failed to get maxDirectMemory size from 
sun.misc.VM, falling back to max heap size", e);
-            }
-            return Runtime.getRuntime().maxMemory();
-        }
-    }
-
-    private static final Logger LOG = 
LoggerFactory.getLogger(DirectMemoryUtils.class);
-}

Reply via email to