相关问题:从Java 6 + Tomcat 6升级到Java 8 + Tomcat 8时的垃圾收集器使用情况
我有一组用Java 8编译的webapps.如果我在Tomcat 8中运行它们,我会得到许多带有随机内存分配的次要GC集合.在Tomcat 6中,内存分配更加线性和稳定(两种情况下都是空闲,没有流量).
伊甸园太空雄猫8:
伊甸园空间雄猫6:
你知道为什么会这样吗?
编辑1:
这些是来自生产环境的数据,包括jdk 1.8和Tomcat 8.由于GC循环,CPU几乎总是很高.对此有何评论?
编辑2:
这是一个heapdump analisis(1.8GB转储):
有没有办法在jvisualvm中重新连接断开连接的JMX连接?当受监视的JMX启用的应用程序重新启动时,我必须重新启动jvisualvm以重新连接它.我错过了什么吗?
这是我的jvisualvm详细信息:
版本:1.6.0_22(Build 100326); platform 091221-4fc006d17cb1
系统:Linux(2.6.35-23-generic),amd64 64bit Java:1.6.0_22; Java HotSpot(TM)64位服务器VM(17.1-b03,混合模式)
摘要选项卡上的Jvisualvm堆转储具有按保留大小检查bigest对象的功能.
保留的真正含义是什么?如何计算和显示对象树的大小?
如果我可以在这里看到对象(10M)和它的成员对象(5M)我应该如何计算堆影响.他们俩都花了10M或15M的堆?
为什么我看不到任何外观巨大的应用程序对象?
谢谢.
在监视远程应用程序时(使用jstatd)我既不能分析也不能监视CPU消耗.堆监控(假设我不使用G1)有效.jvisualvm提供消息"此JVM不支持".在CPU图形窗口中.
我的设置中是否有任何遗漏?谷歌的结果很少.
本地环境(Mac OS X 10.6):
java version "1.6.0_15"
Java(TM) SE Runtime Environment (build 1.6.0_15-b03-219)
Java HotSpot(TM) 64-Bit Server VM (build 14.1-b02-90, mixed mode)
Run Code Online (Sandbox Code Playgroud)
远程环境(Linux版本2.6.16.27-0.9-smp(gcc版本4.1.0(SUSE Linux))):
java version "1.6.0_16" Java(TM) SE
Runtime Environment (build
1.6.0_16-b01) Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
Run Code Online (Sandbox Code Playgroud)
本地监控按宣传方式工作.
我有一个在远程计算机上运行的Java进程,该进程设置了一些mbeans.我也在jstatd该机器上以与Java进程相同的用户身份运行.(可以通过编程或使用-Dcom.sun.management.jmxremote...等方式设置mbeans ,这似乎没有区别).
VisualVM能够jstatd连接到它自动发现的进程,但这意味着我无法访问mbeans,例如CPU历史记录图表.或者我可以创建一个显式的JMX连接,它给了我通常的有用工具,但是我希望应用程序在启动时被分配一个随机的JMX端口,这个配置不能是静态的.
有没有办法让VisualVM通过JMX自动连接到我的进程?这需要它自动发现JMX端口,但我原以为jstatd可以做到这一点.有没有人知道visualvm的任何插件自动化这个?
我已经使用以下参数启动了一个java应用程序:
java
-server
-Dcom.sun.management.jmxremote.port=6789
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Dvisualvm.display.name=MyApp
-cp <classpath>
... application arguments ...
Run Code Online (Sandbox Code Playgroud)
我可以在jvisualvm中看到我的应用程序但是Profiler选项卡没有显示出来.
我应该在应用程序命令行中添加哪些参数?
JDK 1.6.0_24-b07
JConsole已经安静地查看JMX发布的计数器.还有什么其他选择?
除了实际上使用相同视图的JVisualVM之外,我无法找到任何其他内容
我正在使用jdk64我的java版本1.6.0_24.我在Windows Server 2008上以管理员身份运行这两个(Tomcat java进程和VisualVM)进程.
Tomcat正在运行-Xmx7196m,jvisualvm运行时-Xms24m和-Xmx256m.这可能是原因吗?
我在我的远程计算机中使用以下命令启动了我的OSGi应用程序:
java -Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=8080 \
-Dcom.sun.management.jmxremote.local.only=false \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-jar bin/felix.jar
Run Code Online (Sandbox Code Playgroud)
在我的本地机器上,我有VisualVM,我尝试连接到远程JVM实例:



我错过了什么?
谢谢!
我在Java中有一个简单的多线程echo服务器代码(它返回收到的任何内容返回给客户端).我正在分析服务器的各种资源,包括线程统计信息.以下是根据已连接客户端数量的一些统计信息.我的问题是基线(客户0的数量)与非基线的比较!
1)为什么当单个客户端连接时,总线程数增加2?(对于其余的,增加1是有意义的)
2)两个非守护程序线程是什么?!为什么守护进程最初增加1然后被修复?
它们是随机的吗?!
# clients 0 1 2 3 4 5 6 7 8 9 10
Total Started Thread Count 15 18 19 20 21 22 23 24 25 26 27
Thread count 14 16 17 18 19 20 21 22 23 24 25
Peak thread count 14 16 17 18 19 20 21 22 23 24 25
Daemon thread count 12 13 13 13 13 13 13 13 13 13 13
Run Code Online (Sandbox Code Playgroud)
这是服务器的代码段.我正在使用RMI(用于客户端轮询消息)和服务器套接字(用于客户端发送消息).如果需要其他课程,请告诉我.
package test;
import java.io.BufferedReader;
import java.io.IOException; …Run Code Online (Sandbox Code Playgroud)