我对变量范围有疑问.
例如:
class A {
private static void test() {
// do something with local variables
}
}
Run Code Online (Sandbox Code Playgroud)
现在我创建两个线程,并A为每个线程创建一个实例.
当我test()在每个线程中调用时,我可以保证test()线程安全吗?
test()存储的本地变量在哪里?每个线程的堆栈?堆空间?
PS我知道静态在这种情况下完全没有意义.我在遗留代码中找到了它; 我只是想确定我所知道的!
我想在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),计数,创建时间和日期)
我得到一份报告,我的服务有时没有回应.
我发现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)