有哪位大神指导下什么情况(或那个部分)下jvm需要重启电脑才会释放缓存

路西法01 2017-10-16 05:03:02
问题现象为:
执行某个方法,出现开机后第一次运行是重启电脑后java程序运行的5倍。
示例如:
调用方法test()
重启电脑后启动第一次执行需要5s,第二次执行只需要0.6s
退出程序再启动第一次执行需要1s,第二次执行只需要0.6s


比较费解什么原因需要重启电脑?

尝试情况:
了解过jvm会缓存类结构,尝试过在程序启动将将所有类实例一次,但这个方法效果不明显。
...全文
2317 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
demystify 2018-02-11
  • 打赏
  • 举报
回复
引用 9 楼 zssazrael 的回复:
[quote=引用 7 楼 yuquan0405 的回复:] 您了解这个机制? 有办法解决这个问题吗?,这个现象导制体验不太好
其实慢才是实际速度,所以没有好的方法,换个SSD可能会改善。[/quote] 重启电脑后执行慢是硬件或虚拟机本身的问题,体验不好是你程序的问题,因为启动后第一次比较慢,那么你就需要一些方法来改进用户体验(不考虑硬件升级的情况),比如优化你的程序启动体验和程序加载机制,设置一个启动界面或动画?,或者调整执行慢的函数能不能并发?,这也是一个思路。
幽饮烛 2018-01-31
  • 打赏
  • 举报
回复
引用 7 楼 yuquan0405 的回复:
您了解这个机制? 有办法解决这个问题吗?,这个现象导制体验不太好
其实慢才是实际速度,所以没有好的方法,换个SSD可能会改善。
oyljerry 2018-01-29
  • 打赏
  • 举报
回复
就是有些文件可能会读取到内存中,而重启电脑的时候,需要读取加载文件一次
路西法01 2018-01-29
  • 打赏
  • 举报
回复
引用 6 楼 zssazrael 的回复:
这是正常现象,系统会缓存文件,所以重启电脑后第一次执行需要从硬盘读取文件,比较慢。不重启电脑的情况下可以直接读取缓存,不叫快。
您了解这个机制? 有办法解决这个问题吗?,这个现象导制体验不太好
路西法01 2018-01-25
  • 打赏
  • 举报
回复
引用 3 楼 Milogenius 的回复:
第一次运行需要编译,会不会导致时间消耗多
第一次运行jvm确实有编译过程,我比较不理解的点在于为什么重启jvm 和重启电脑有区别 重启电脑对swt的资源确实是有一定影响,不过我也排查过这个问题
幽饮烛 2018-01-25
  • 打赏
  • 举报
回复
这是正常现象,系统会缓存文件,所以重启电脑后第一次执行需要从硬盘读取文件,比较慢。不重启电脑的情况下可以直接读取缓存,不叫快。
幽饮烛 2018-01-25
  • 打赏
  • 举报
回复
这是正常现象,系统会缓存文件,所以重启电脑后第一次执行需要从硬盘读取文件,比较慢。不重启电脑的情况下可以直接读取缓存,不叫快。
爱写Bug的麦洛 2017-11-18
  • 打赏
  • 举报
回复
第一次运行需要编译,会不会导致时间消耗多
路西法01 2017-11-14
  • 打赏
  • 举报
回复
自已再顶下 xxxxxxxx
路西法01 2017-10-17
  • 打赏
  • 举报
回复
自 己 顶 下 吧

62,612

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧