小编dep*_*her的帖子

声明许多相同的匿名类会浪费java中的内存吗?

我最近在我正在处理的现有代码库中运行了以下代码段,并添加了您在那里看到的注释.我知道这段特殊的代码可以重写为更清晰,但我只是想知道我的分析是否正确.

java会创建一个新的类声明并将其存储在perm gen空间中,以便每次调用此方法,还是会知道重用现有的声明?

protected List<Object> extractParams(HibernateObjectColumn column, String stringVal) {
    // FIXME: could be creating a *lot* of anonymous classes which wastes perm-gen space right?
    return new ArrayList<Object>() {
        {
            add("");
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

java

10
推荐指数
2
解决办法
2281
查看次数

使用Google Cloud Monitoring v3 api写入自定义时间序列

谷歌警告说,v2监控api现已弃用,很快就会消失.然而,迁移到v3被证明有点困难.我正在尝试编写自定义指标,并收到以下错误响应:

服务> Google Monitoring API v3> monitoring.projects.timeSeries.create

{
    "timeSeries": [{
        "metric": {
            "type": "custom.googleapis.com/test_metric",
            "labels": {
                "payment_type": "Paypal"
            }
        },
        "resource": {
            "type": "custom.googleapis.com/test_metric",
            "labels": {
                "payment_type": "Paypal"
            }
        },
        "metricKind": "GAUGE",
        "valueType": "INT64",
        "points": [{
            "interval": {
                "endTime": "2016-03-20T15:01:23.045123456Z",
                "startTime": "2016-03-20T15:01:23.045123456Z"
            },
            "value": {
                "int64Value": "2"
            }
        }]
    }]
}

{
  "error": {
  "code": 400,
  "message": "Field timeSeries[0].resource.type had an invalid value of \"custom.googleapis.com/test_metric\": Unrecognized resource name.",
  "status": "INVALID_ARGUMENT"
}
Run Code Online (Sandbox Code Playgroud)

"资源"字段是必需的,文档称它是"MonitoredResource"...但我没有看到任何api用于创建一个,仅用于列表.采取疯狂的猜测并将其设置为"全局"似乎让我更进一步,并给了我这个不同的错误:

{
 "error": {
  "code": 400,
  "message": "Field timeSeries[0].resource.labels[0] …
Run Code Online (Sandbox Code Playgroud)

google-app-engine google-cloud-platform stackdriver google-cloud-monitoring

7
推荐指数
1
解决办法
1763
查看次数


如何使用清单 v3 在 chrome 扩展中执行定期后台工作

background.js 机制在清单 v3 中被删除,我正在寻找如何在后台执行周期性操作,因为它已经消失了。

此升级指南说使用 chrome 警报 api: https://developer.chrome.com/docs/extensions/mv3/migration_to_service_workers/

具体来说,它说:

相反,我们可以使用 Alarms API。与其他侦听器一样,警报侦听器应在脚本的顶层注册。

目前尚不清楚它需要成为哪个脚本的顶层,但是当使用我的 chrome 扩展的入口点“popup.js”时,它会定期执行,但仅当 chrome 弹出窗口实际打开时才执行。即使弹出窗口关闭,我也需要它在后台执行。附带说明的是,我对 chrome.alarms 未定义,直到我将“警报”添加到清单文件中的权限,然后它不会阻塞,但我仍然遇到它不运行后台的问题。

由于上面的文章是在 Service Worker 的上下文中,我假设您需要将警报侦听器放在 service-worker.js 文件的顶层。只是这个不行。我在这里未定义 chrome.alarms (即使授予了“警报”权限):

service-worker.js

console.log("inside service worker")

// getting chrome.alarms undefined here
chrome.alarms.create("alarm", { periodInMinutes: 1 });
Run Code Online (Sandbox Code Playgroud)

将其放入安装事件侦听器中也没有帮助:

self.addEventListener('install', event => {
    console.log("Installing service worker")
    // still getting chrome.alarms undefined here
    chrome.alarms.create("alarm", { periodInMinutes: 1 });
    chrome.alarms.onAlarm.addListener((alarm) => {
        if (alarm.name === "alarm") {
            let milliseconds = new Date().getTime();
            console.log(milliseconds)
            chrome.action.setTitle({
                title: "Hello "+ milliseconds …
Run Code Online (Sandbox Code Playgroud)

manifest google-chrome-extension service-worker

3
推荐指数
1
解决办法
3555
查看次数