Files
Hippy/docs/development/v8-api.md
zealotchen c8908b38aa Feature/zealot2 doc 3.0 (#3296)
* docs(doc): update doc path

* docs(doc): update doc path

* docs(doc): update doc path

* docs(doc): update doc path

* docs(doc): update doc for 3.0

* docs(doc): update doc for 3.0

* docs(doc): update doc for 3.0

* docs(doc): update doc for 3.0

* docs(doc): update doc for 3.0

---------

Co-authored-by: OpenHippy <124017524+open-hippy@users.noreply.github.com>
2023-06-14 20:51:28 +08:00

2.1 KiB
Executable File

V8 API

获取 V8 JS 引擎对象,并操作相关方法。


GetHeapStatistics

获取 js 堆内存信息。

最低支持版本 2.15.0

V8 v8 = mHippyEngine.getV8();
if (v8 != null) {
  boolean success = v8.getHeapStatistics(new Callback<V8HeapStatistics>() {
    @Override
    public void callback(V8HeapStatistics param, Throwable e) {
      if (param != null) {
        // success
      } else {
        // error
      }
    }
  });
  if (!success) {
    // error
  }
}

GetHeapCodeStatistics

获取js堆中代码及其元数据的统计信息。

最低支持版本 2.15.0

V8 v8 = mHippyEngine.getV8();
if (v8 != null) {
  boolean success = v8.getHeapCodeStatistics(new Callback<V8HeapCodeStatistics>() {
    @Override
    public void callback(V8HeapCodeStatistics param, Throwable e) {
      if (param != null) {
        // success
      } else {
        // error
      }
    }
  });
  if (!success) {
    // error
  }
}

GetHeapSpaceStatistics

返回堆各个空间的统计信息。

最低支持版本 2.15.0

V8 v8 = mHippyEngine.getV8();
if (v8 != null) {
  boolean success = v8.getHeapSpaceStatistics(new Callback<V8HeapSpaceStatistics>() {
    @Override
    public void callback(V8HeapSpaceStatistics param, Throwable e) {
      if (param != null) {
        // success
      } else {
        // error
      }
    }
  });
  if (!success) {
    // error
  }
}

WriteHeapSnapshot

生成一个堆快照(可导入Chrome浏览器开发者工具分析)。

最低支持版本 2.15.0

V8 v8 = mHippyEngine.getV8();
if (v8 != null) {
  File hippyFile = FileUtils.getHippyFile(mHippyEngine.getEngineContext().getGlobalConfigs().getContext());
  String snapshotPath = hippyFile.getAbsolutePath() + File.separator + "snapshot" + File.separator + "1.heapsnapshot";
  boolean success = v8.writeHeapSnapshot(snapshotPath, new Callback<Integer>() {
    @Override
    public void callback(Integer param, Throwable e) {
      if (param == 0) {
        // success
      } else {
        // error
      }
    }
  });
  if (!success) {
    // error
  }
}