小编Aur*_*ien的帖子

Java对象内存占用 - Visualvm和java.sizeOf测量

我试图了解Java中对象的内存占用量.我在Java中阅读了关于对象和内存的这个和其他文档.

但是,当我使用sizeof Java库或visualvm时,我会得到两个不同的结果,根据之前的参考文献(http://www.javamex.com),这些结果都不会超出我的预期.

对于我的测试中,我使用Java SE 7 Developer Preview一个64-bits Mac带有java.sizeof 0.2.1visualvm 1.3.5.

我有三个班,TestObject,TestObject2,TestObject3.

public class TestObject
{

}

public class TestObject2 extends TestObject
{
    int a = 3;
}

public class TestObject3 extends TestObject2
{
    int b = 4;
    int c = 5;
}
Run Code Online (Sandbox Code Playgroud)

我的主要课程:

public class memoryTester
{
    public static void main(String[] args) throws Throwable
    {
        TestObject object1 = new …
Run Code Online (Sandbox Code Playgroud)

java memory visualvm object

8
推荐指数
1
解决办法
2218
查看次数

Kafka Stream - 如果在一段时间内没有收到给定键的事件,如何发送警报

如果在一段时间内未在给定键的主题中收到任何事件,我需要发送警报。使用 KafkaStream 解决此用例的最佳方法是什么?

我试过:

1) windowedBy与抑制运算符一起:

    stream
        .groupByKey()
        .windowedBy(TimeWindows.of(Duration.ofMillis(1000)).grace(Duration.ZERO))
        .count()
        .suppress(Suppressed.untilWindowCloses(unbounded()))
        .filter((k, v) -> v == 0)
        .toStream()
        .map((windowId, count) -> KeyValue.pair(windowId.key(), AlarmEvent.builder().build()))
        .to(ALARMS, Produced.with(Serdes.String(), AlarmEvent.serde()));
Run Code Online (Sandbox Code Playgroud)

但似乎窗口不会关闭,直到过期后发生事件,因此在定义的超时之后无法发送警报。

2)使用带有标点符号的处理器API ,它似乎可以工作,但我只使用 TopologyTestDriveradvanceWallClockTime ()进行测试。不确定这个 advanceWallClockTime() 反映了实时提前,或者只会在事件接收时改变,从而回到 1) 中的问题。

3)如果标点符号有效,我想在 ValueTranformer 中使用它从 DSL 拓扑中受益。但是,我遇到了如何从 ValueTransformer 中的 Punctuator 实例向下游转发事件?中描述的问题。。无法从标点符号实例向下游发送事件。

4)最后,我想到了为每个分区定期(例如每秒)注入一些虚拟事件,从而人为地强制内部时钟前进。这将使我能够使用干净简单的 DSL 窗口并抑制运算符。

apache-kafka-streams

5
推荐指数
1
解决办法
1498
查看次数

如何从 ValueTransformer 中的 Punctuator 实例向下游转发事件?

在 KafkaStream 中,在实现ValueTransformerValueTransformerWithKey 时,在调用transform()时,我安排了一个新的 Punctuator。当执行Punctuator 的punctuate()方法时,我希望它使用上下文实例向下游转发事件。然而,当 DSL 拓扑的一部分时,上下文实例似乎没有定义。

关于如何使用 Transformer 执行此操作的任何线索?

在处理器中使用相同的逻辑,实现其工作的低级处理器拓扑。

在 ValueTransformerWithKey 中:

@Override 
    public Event transform(final String key, final Event event) { 
        this.context.schedule(timeout.toMillis(), PunctuationType.WALL_CLOCK_TIME, new MyPunctuator(context, key, event));
        return null;
}
Run Code Online (Sandbox Code Playgroud)

在 MyPunctuator 中:

private class MytPunctuator implements Punctuator {
    private String key;
    private ProcessorContext context;
    private Event event;

    MyPunctuator(ProcessorContext context, String key, Event event)
    {
        this.context = context;
        this.key = key;
        this.event = event;
    }

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

apache-kafka-streams

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

标签 统计

apache-kafka-streams ×2

java ×1

memory ×1

object ×1

visualvm ×1