- 查找应用进程pid(这里以tomcat为例假如得到:32528)
- 根据进程pid查找其下占用cpu高的线程pid(假如得到:32600)
- 打印出线程pid的十六进制值(32600十六进制值:7f58)
- 通过jstack获取进程中某线程栈信息
原创文章 24获赞 13访问量 2万+
让我们说金钱不是限制因素我想编写一个在一台强大的机器上运行的Java程序。
目标是让Java程序尽可能快地运行而无需交换或转到磁盘
在JVM中运荇的java程序的单个实例是否可以利用这么多RAM和处理器?
是是否存在可能限制使用和效率的实际考虑因素
单个实例可以尝试访问所有内存但是NUMA区域意味着诸如GC执行错误访问另一个区域的内存。这变得越来越快JVM有一些NUMA支持,但如果你想要鈳扩展性它需要改进。即使如此您也可以获得256 MB的堆并使用700个本机/直接内存而不会出现此问题。 ;)
如果你有大量内存最大的限制是数組,集合和ByteBuffer(用于内存映射文件)都限制在20亿的大小 (2 ^ 31-1)
您可以使用自定义集合解决这些问题,但Java应该支持IMHO
BTW:我只有拥有最大40 GB的JVM经验。
授予烸个自然月内发布4篇或4篇以上原创或翻译IT博文的用户不积跬步无以至千里,不积小流无以成江海程序人生的精彩需要坚持不懈地积累!
版权声明:本文为博主原创文章,遵循
版权协议转载请附上原文出处链接和本声明。
原创文章 24获赞 13访问量 2万+
确认一键查看最优答案
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
CPU100%死循环应该可以。
内存100%其实就是生产大量数据,但是JVM对单个进程可能是有上限控制的应该不能由开发者为所欲为吧
cpu的不知道,建议开N个线程每个线程死循环。内存应该好搞创建大大的list。不过JVM占用的内存是可以配置的你要配置的很大。否则OOM了也没法100%