小编Dae*_*Han的帖子

静态方法和线程安全中的局部变量

我对变量范围有疑问.

例如:

class A {
    private static void test() {
        // do something with local variables
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我创建两个线程,并A为每个线程创建一个实例.

  1. 当我test()在每个线程中调用时,我可以保证test()线程安全吗?

  2. test()存储的本地变量在哪里?每个线程的堆栈?堆空间?

PS我知道静态在这种情况下完全没有意义.我在遗留代码中找到了它; 我只是想确定我所知道的!

java static thread-safety

21
推荐指数
1
解决办法
1万
查看次数

redis记忆效率

我想在Redis上的MySQL中加载4列和80行的数据,这样我就可以减少读取延迟.

但是,当我尝试加载所有数据时,它变大了5倍.

原始数据是3gb(当导出为csv格式时),但是当我在Redis上加载它们时,它需要15GB ...它对我们的系统来说太大了.

我也尝试了不同的数据类型 -

1)'table_name:row_number:column_name' - > string 2)'table_name:row_number' - > hash

但所有这些都需要太多.

我错过了什么吗?

添加)

我的数据有4个col - (用户ID(pk),计数,创建时间和日期)

database memory redis

4
推荐指数
1
解决办法
979
查看次数

密集的GC活动会关闭服务的临时性

我得到一份报告,我的服务有时没有回应.

我发现java进程完全占用一个核心(4个核心中只有一个核心),

所以我通过网络搜索,发现这个:Hung JVM消耗100%的CPU

我开始记录每个GC活动,并发现奇怪的日志.

26149.891: [GC [PSYoungGen: 138048K->37757K(184512K)] 360110K->295763K(1495232K), 0.0749820 secs] [Times: user=0.53 sys=0.02, real=0.07 secs] 
26150.173: [GC [PSYoungGen: 143741K->37312K(183616K)] 401747K->333115K(1494336K), 0.0706090 secs] [Times: user=0.50 sys=0.02, real=0.07 secs] 
26150.450: [GC [PSYoungGen: 143296K->37280K(187328K)] 439099K->370363K(1498048K), 0.1557100 secs] [Times: user=1.07 sys=0.02, real=0.15 secs] 
26150.818: [GC [PSYoungGen: 148320K->42028K(185856K)] 481403K->412407K(1496576K), 0.0835340 secs] [Times: user=0.60 sys=0.03, real=0.08 secs] 
26151.121: [GC [PSYoungGen: 153068K->39040K(188416K)] 523447K->451423K(1499136K), 0.0831170 secs] [Times: user=0.58 sys=0.02, real=0.08 secs] 
26151.436: [GC [PSYoungGen: 152448K->39872K(187136K)] 564831K->491311K(1497856K), 0.1627710 secs] [Times: user=1.22 sys=0.03, real=0.17 secs] 
26151.832: [GC …
Run Code Online (Sandbox Code Playgroud)

java tomcat garbage-collection

2
推荐指数
1
解决办法
672
查看次数