一、测试代码
public class T15_FullGC_Problem01 {
private static class CardInfo {
BigDecimal price = new BigDecimal(0.0);
String name = "张三";
int age = 5;
Date birthdate = new Date();
public void m() {
}
}
private static ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(50,
new ThreadPoolExecutor.DiscardOldestPolicy());
public static void main(String[] args) throws Exception {
executor.setMaximumPoolSize(50);
for (;;){
modelFit();
Thread.sleep(100);
}
}
private static void modelFit(){
List<CardInfo> taskList = getAllCardInfo();
taskList.forEach(info -> {
// do something
executor.scheduleWithFixedDelay(() -> {
//do sth with info
info.m();
}, 2, 3, TimeUnit.SECONDS);
});
}
private static List<CardInfo> getAllCardInfo(){
List<CardInfo> taskList = new ArrayList<>();
for (int i = 0; i < 100; i++) {
CardInfo ci = new CardInfo();
taskList.add(ci);
}
return taskList;
}
}
二、在linux上启动测试程序
java -Djava.rmi.server.hostname=IP地址 -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=11111 -Dcom.sun.management.jmxremote.authenticatealse -Dcom.sun.management.jmxremote.ssl=false -XX:+PrintGC -Xms200M -Xmx200M T15_FullGC_Problem01
三、本地配置jsconle
1.先找到jsconsle
我的jsconle是在这个路径下面:C:\Program Files\Java\jdk1.8.0_271\bin
2.双击启动jconsle
2.1选择远程,输入程序启动时的ip和端口地址,然后再输入linux服务器的账号和密码
2.2 登录成功后,会有提示,选择不安全的连接即可,然后就可以了
三、本地VisualVM配置
1.VisualVM跟jconsle在同一个目录下,双击启动
2.启动之后选择“远程”,然后选择“文件”,添加JMX连接
3.登录信息跟jconsle一样的