发帖数: 1 | 1 当徐小平喊着ALL IN区块链的时候,一群打鸡血的人齐嚷着三点钟无眠,为这个伟大时
代的来临而颤抖而热泪盈眶的时候,他们应该不会想到,仅仅过了半年,币圈便有些天
上人间了。
天冷别TM蹭了
最近一阵,随着一根根大阴线劈头盖脸地砸下来,各路韭菜顿时被砸蒙了。币价一路狂
泄,比特币跌到5800刀,以太坊凿穿300刀,一众小币种更是清一色的破发。
币圈里一片哀嚎,币价瀑布,行情低迷,凉凉之声彼起彼伏,据说稳赚不赔的矿工兄弟
也开始拔电源了。
于是不少人言之凿凿地表示:凛冬来了,币圈要准备过冬了。
也确实,这些天北京天气称不上烤炉,但好歹还在三伏天里,一动不动却挥汗如雨的情
况还是时有发生的。
但观看币价时,阵阵寒意直透手机屏,种种拔凉直击五脏六腑,每每心旷神怡,精神抖
擞,其中酸爽种种妙不可言。
这大概就是我等小韭菜自我修养的良好体现。
有数据显示,2018年开始的这一轮加密货币市场大调整,让比特币的总市值蒸发了2220
亿美元,而其价格从2017年12月16日的19343美元一路下跌至2018年8月15日的6270美元。
比特币之外,以太坊、莱特币等主力加密货币也损失惨重,全球加密货币市场... 阅读全帖 |
|
n******7 发帖数: 12463 | 2 有几个问题请教:
1. 如何效率地评估java程序的内存消耗和运行时间?
前几天问了java code在不同机器上内存消耗不同的问题。现在测试了不同的Xms Xmx参
数,同样的机器使用16core,16个进程时大致如下.基本上Xms=1/2g,Xmx=6g时内存消耗
最少,也显著比其他参数要快。没有再往下测了。但是这样测试觉得好没效率,有没有
什么自动半自动的方法可以做这个评估的?特别是很多语言benchmark的测试,他们是
怎么评估像java这样语言的速度和内存使用的?
Xms Xmx
16g 112g: cput=11:50:14,mem=30666936kb,vmem=125003524kb,walltime=00:48
:24
16g 48g: cput=11:50:32,mem=28415984kb,vmem=55443888kb,walltime=00:48:
22
16g 40g: cput=11:47:43,mem=25669572kb,vmem=46747780kb,walltime=00:48:
13
16g 32g: cput=11:49:53,mem=... 阅读全帖 |
|
h**********c 发帖数: 4120 | 3 suggest you read Java Performance, written by Oracle engineers.
My thinking is GC should be handled out of the vm box. Single VM should be
stress-tested and the program/task should be able to throttle itself for
memory utilization and persist over usage to database. Use cluster/load
balancer to comprehensively conduct the VMs' symphony by major process
tables' reading or VM status readings -- process threshhold trigger balancer
audit and administration.
Unfortunately, in real life, we rather hav... 阅读全帖 |
|
O*t 发帖数: 56 | 4 应该不是内存的事情,本身程序不太耗内存
再说只有在自己的机器上才需要提高-Xms -Xmx之类的东西
服务器内存大,jvm默认-Xmx就在32G. 这个程序完全没可能用完 |
|
g**y 发帖数: 983 | 5 I want to compare the upper limit of memory allocation of JVMs
I know the parameter -Xmx, I want to know is the limit for -Xmx |
|
k****f 发帖数: 3794 | 6 fortran函数的一个参数是derived data type,定义为:
TYPE, PUBLIC :: data_type
PRIVATE
INTEGER :: iter
INTEGER :: itmax
REAL ( KIND = working ) :: alpha
REAL ( KIND = working ) :: stop
REAL ( KIND = working ) :: diag
REAL ( KIND = working ) :: xmx
LOGICAL :: printi
REAL ( KIND = working ), POINTER, DIMENSION( : ) :: P, D, Z, W
END TYPE
怎么变成C的结构??
我写了
struct data_type{
int iter,itmax;
double alpha,stop,diag,xmx;
i |
|
g*****g 发帖数: 34805 | 7 Did you use -Xmx when you start you JVM?
JVM by default only uses 64MB memory, it doesn't matter how much memory
you have if you don't specify Xmx.
Also, if you don't like ArralyList for whatever reason, use int[] then.
In |
|
n******7 发帖数: 12463 | 8 我的理解是Xms Xmx是最主要,也最好控制的两个参数?我只想直到对于我这个code,
怎么最快找到接近最佳的参数
比如这里说的
http://www.cubrid.org/blog/dev-platform/how-to-tune-java-garbag
Table 1: JVM Options to Be Checked for GC Tuning.
-Xms Heap area size when starting JVM
-Xmx Maximum heap area size
-XX:NewRatio Ratio of New area and Old area
-XX:NewSize New area size
-XX:SurvivorRatio Ratio of Eden area and Survivor area
you
GC |
|
n******7 发帖数: 12463 | 9
这个我现在明白了 GC pause对我无所谓
这个我有疑问。就我的结果,同样Xmx的情况下,Xms越小反而越快
6g 6g: cput=11:55:44,mem=6518500kb,vmem=9793676kb,walltime=00:48:59
2g 6g: cput=11:26:22,mem=3628316kb,vmem=9793676kb,walltime=00:47:49
1g 6g: cput=11:25:40,mem=3005524kb,vmem=9793676kb,walltime=00:47:48
虽然只测了一次,这个1分钟的差异还是挺大的
而同样Xms的情况下,Xmx几乎没影响
16g 112g:cput=11:50:14,mem=30666936kb,vmem=125003524kb,walltime=00:48:24
16g 48g: cput=11:50:32,mem=28415984kb,vmem=55443888kb,walltime=00:48:22
16g 40g: cput=11:47:43,mem=25669572kb,vmem=4... 阅读全帖 |
|
w**z 发帖数: 8232 | 10 the common practice is to set the Xms = Xmx for server app. my guess is that
your app is more cpu bound than memory bound. but someone says Xms doesn't
make difference. personally, I always set Xms the same as Xmx. http://java-monitor.com/forum/showthread.php?t=427 |
|
w***g 发帖数: 5958 | 11 你的出发点是好的,但我觉得没做到点子上。48分钟walltime,就是差1分钟,也就是2
%的样子,并不是显著差异。如果你非要测这2%的差异,那么就要跑比如10次取平均,
而且每次跑之前需要invalidate buffer cache http://aplawrence.com/Linux/buffer_cache.html。有各种原因可能导致2%的差异,不一定光是Xms, Xmx的问题。当然最后测出来,可能还是只有2%的差异。所以还不如花时间在优化代码上,尽量简化代码的内存分配,减少不确定性,提高L2 cache命中率。前面也提了,把Xmx和Xms设成比你可用的最大量小一点就可以,反正不用也是浪费。
thread > core会有性能提升是因为一个thread block的时候另一个thread可以跑。
hyperthread有时候有帮助,有时候反而会使得程序更慢,没有一个定论。我认识有的人
一上来就disable hyperthreading。我的经验是hyperthread能有一定的性能提升。
如果你的cache命中率本来就低,那么再提高线程数可能还能更快。但正道是改代码
... 阅读全帖 |
|
g*****g 发帖数: 34805 | 12 Tweaking Xmx size, set Xms=Xmx would be where I start. In some case, object
pool is an effective way to reduce GC if there are lots of short-live
objects. Making the system scale out is another way that can solve the issue
indirectly. |
|
|
|
h***i 发帖数: 1970 | 15 garbage collection是怎样运作的,heap分哪几种,class的info是放在哪片内存?什
么是xms, xmx, newRatio, 描述一下不同的garbage collector, 描述一下G1 |
|
Q********3 发帖数: 143 | 16 非大牛
jprofiler, jconsole可以
JNI可能造成泄露,强引用无用的对象会造成内存浪费
OOM一般分为两大类
一是heap OOM,
1.用jprofiler看是那些对象占用了大部分内存,然后分析这些地方是否可以优化
2.调整jvm的内存参数Xms,Xmx
二是permgen space OOM
调整jvm参数,permsize 和maxpermsize
监视内存使用情况可以用MBean,很多大公司都有一套系统去监控CPU,内存,硬盘使用
情况 |
|
|
M****o 发帖数: 13571 | 18 dihouyuan 中国北京西城地安门大街31号西侧迪厚源酒吧0层 酒店 已验证
mingrenchayi 中国北京海淀海淀区北太平桥北500米茗仁茶艺馆0层 其他 已验证
shyitaly 中国北京朝阳朝阳区三里屯南路北口生活园 意大利餐厅0层 其他 已验证
shyitaly 中国北京朝阳朝阳区三里屯南路北口生活园 意大利餐厅0层 其他 已验证
sltjbjcoffee 中国北京朝阳三里屯酒吧街咖啡44号三里屯酒吧街咖啡44号0层 咖啡
馆 已验证
zhuluchayuan 中国北京海淀海淀区交大东路36号北京逐鹿茶苑有限责任公司0层 其
他 已验证
jingdianoya 中国北京东城东环广场B座南门首层经典欧亚美食音乐酒廊0层 酒店 已
验证
hanchayuan 中国北京东城东环广场A座EC-3号翰茶缘 茶社0层 其他 已验证
beijinghaishang 中国北京海淀海淀交大东路60号北京海上美景咖啡厅0层 咖啡馆
已验证
yindingyese 中国北京西城烟袋斜街银锭夜色西餐酒吧0层 酒店 已验证
luyuxuan_tpz 中国北京海淀海淀区东三环... 阅读全帖 |
|
b***7 发帖数: 949 | 19 titi 中国北京西城金融街中凌大厦0层 咖啡馆 已验证
gingeer 中国北京顺义站前北街站前北街交通楼6层 家庭 已验证
hyperion911 中国北京海淀北三环中路大楼0层 家庭 已验证
qydzcoffee 中国北京朝阳东直门外南大街甲2号东环广场AZ座附近0层 咖啡馆 已验证
wewscoffee 中国北京阳光上东方街路口处0层 咖啡馆 已验证
yhfz 中国北京嘉林路甲1号0层 其他 已验证
ydcoffee 中国北京崇文广渠门内大街通正国际大厦2层0层 已验证
zmy 中国北京朝阳工体被卢号0层 车站 已验证
ldmcyg 中国北京朝阳胜古庄7号企发大厦1层0层 其他 已验证
ybgcyg 中国北京海淀海淀区上地信息路19号0层 其他 已验证
bjtnjd 中国北京朝阳三里屯西六街6号乾坤大厦一层0层 酒店 已验证
btcafe 中国北京东城景山前街10号0层 咖啡馆 已验证
bjhfjb 中国北京西城西直门外大街141号0层 其他 已验证
bkcoffee 中国北京东城soho现代城a区C座S-10010层 咖啡馆 已验证
xitidao_cn 中国北京朝阳北京市朝... 阅读全帖 |
|
x**n 发帖数: 29 | 20 没用JNI,不过看你写一个独立class可以,而
整合到vbj里面不可以的话,并且有大内存的分配.
试试设置运行时候的虚拟机的参数。
java -X
-Xms set initial Java heap size
-Xmx set maximum Java heap size
-Xss set java thread stack size
-Xprof output cpu profiling data
"SIGSEGV 11 segmetation violation
si_signo [11] : SEGV"
好象是数据越界了,访问了不属于它的地址. |
|
d**********d 发帖数: 161 | 21 using -Xmx
for example: -Xmx10g |
|
q*******i 发帖数: 353 | 22 我内存2G,-Xmx只能设置1.5G(对程序来说还是不够),之后eclips就要报错,想问下
有没有办法能开辟更多的空间能使得Java能利用硬盘虚拟内存。谢谢 |
|
x*p 发帖数: 4 | 23
Use -Xmx option to set up the maximum Java runtime heap size
when you run your Java program. |
|
s*********n 发帖数: 13 | 24 modify initial heap size and maximum heap size to see if it helps
options are -Xms and -Xmx |
|
w*******t 发帖数: 186 | 25 set runtime parameter:
-Xms set initial Java heap size
-Xmx set maximum Java heap size
-Xss set java thread stack size |
|
g*****g 发帖数: 34805 | 26 You should isolate your problem first. If it's just that your CPU is not fast
enough, it would be slow, but still able to handle. If you are short of
memory. Add memory, increase xmx, put your unused large object into null, or
consider C/C++ alternative. |
|
st 发帖数: 1685 | 27 not that much different, what's the problem? no way to use dynamic programming?
some time the memory size you give java matter a lot, try to increate xmx |
|
m********r 发帖数: 23 | 28
language,
If that's the case, I'm doing dynamic programming. Everything is in the memory
and the final result is printed to the screen.
xmx
Yeah. But there's no way around that.
I can try that, but the total memory it has is 1024M. I'm really more
interested in running it on a faster system with much more memory. Don't know
what's the max size JVM can handle yet though. |
|
|
c*m 发帖数: 836 | 30 这年头没多少人care内存了吧?我们公司笔记本的标配都是2G内存,work station可以
申请4G,我的eclipse Xmx设到768M,同时打开几个大的project (liferay portal,
jboss as, etc), 绰绰有余。 |
|
m******t 发帖数: 2416 | 31 Well you can actually specify -Xmx to as large as the available system
memory. JVM would still dynamically request memory as it needs. It just won'
t give it back.
to |
|
y********o 发帖数: 2565 | 32 我来继续自说自话。
JavaRanch 的 Gaurav Chikara 说:
Generally this exception comes when heap memory exceeeds to that what JVM ca
n handle.
You must try setting heap memory to greater value using xmx ,xms variables i
n your Environment file
|
|
g******e 发帖数: 3760 | 33 这个要看你的程序是怎么启动的,如果是用script那么可以修改其中的JVM参数(-Xmx),
如果是用一个bootstrap启动的那你只好找作者了. |
|
g*****g 发帖数: 34805 | 34 try specify -Xms -Xmx when you start jboss.
get
WHERE |
|
s******n 发帖数: 876 | 35 if nothing else, a usual suspect would be the garbage collection.
try to give it a lot of memory, and set Xms equal Xmx.
so that JVM won't shrink and expand its heap all the time.
java -Xms2G -Xmx2G |
|
g*****g 发帖数: 34805 | 36 maven 不懂,但你可以在eclipse启动的参数里加-Xmx让eclipse多用
一点内存。
档. |
|
|
u****s 发帖数: 2186 | 38 some versions of JRE have bugs on -Xmx setting.
free |
|
q*******i 发帖数: 353 | 39 设置了XMx到最大了(我的机子大概1.5G),但是还是有outofheap,虽然程序本身需要
内训确实比较大,但是还是想查查有没有问题,搜索网上有一个Win32 Java Heap
Inspector,但是链接地址都没法下载了。好虫有啥推荐的免费软件? |
|
s******n 发帖数: 876 | 40 why not ask the seller then?
try smaller -Xms and -Xmx? |
|
|
|
r*****l 发帖数: 2859 | 43 In normal case, production system may have >1.5G Xmx. And 256M PermSize is
large enough.
This is always case by case however. |
|
s*******e 发帖数: 3042 | 44 以前都没仔细想过这个问题,就是觉得common sense, 够用就行了,今天和一个同事
讨论起来了,越讨论越糊涂,我们的VM xmx=16G, 感觉perm gen大小差个几百兆真没什
么实质影响,是不是这么回事呢? |
|
c*m 发帖数: 836 | 45 理论上,是会快的,因为
第一,楼主有多核CPU,文本in memory processing is a CPU bound process,所以多
线程处理可以加快
第二,整个程序有IO heavy和CPU heavy的两个部分,即使没有多核CPU,多线程处理也
可以减少block的时间,增加单位时间的throughput。
但是在实践中,400M的data,用现在最普通的家用PC,无论你怎么处理,都是一转眼的
事,多不多线程可能也就是几秒钟的区别。楼主这3小时的processing time实在让人很
纳闷究竟他的程序都干了啥。就算不用buffered reader, 每次读入一个char也用不了
这么久。我现在深度怀疑他没设Xmx参数,造成JVM用的default value (128 or 256M?)
。但是即使这样也不该用三个小时。 |
|
c*m 发帖数: 836 | 46 4G data也不大。不知道你有什么限制把xmx设在1.5G。如果你用64bit JVM,完全可以
设成6G,8G,足够把数据全load进去一次性完成计算。 如果必须用32bit, 至少也可以
设的尽量高一些。
我想不出什么地方不能用ConcurrentHashMap只能用synchronizedHashMap。像这种不分
青红皂白把一个instance全用一个lock object锁住的case, 都要慎重。尤其是对于non
trivial的method call。
我现在大概理解你为什么datastore要synchronized了,因为内存不够,不能一次读进
来,所以它在给别的thread提供数据的同时还要读文件。既然你的数据每行都有编号可
以独立标识,又会存到一个map里,那么我觉得这个datastore的存在除了临时存一下文
件,没有太大必要。你完全可以抛弃这个datastore, 让十个thread自己去读文件,把
同一个stream都pass给他们就可以了。这样肯定会增加throughput, 也会减少对内存的
需求。
对于Map cache, 你用一个thread去清理... 阅读全帖 |
|
g*****g 发帖数: 34805 | 47 You should specify more memory on -Xmx.
You should have a limit for size of the file being processed, and a total
limit of the size of all files being processed concurrently.
You can also call Runtime.freeMemory() before you process the file. But it
may not be reliable. |
|
l****n 发帖数: 55 | 48 遇到 java.lang.OutOfMemoryError: Java heap space
然后开始调 Xmx 从512m一直调到 40960m
我和我的小伙伴都惊呆了。。。请教这是怎么回事,谢谢 |
|
|
s*****o 发帖数: 1565 | 50 运行一个java的web crawler,多线程,用runnable做的,在centos 6.3上面运行
一开始只占几百mb,后来机器剩余内存越来越少,四五十个小时后程序因为
outofmemoryexception终止
同样的程序在windows下运行几个月都没事,内存使用从来也没超过-Xmx的限制
贴图是关闭程序之后的内存情况
请帮忙分析分析怎么回事,多谢! |
|