jvm 学习

jvm 学习

以前看过,基本做过一点实践,不过,还是老问题,一直不会对这类问题进行记忆.
某些时候.有些头疼,所以.还是总结一下.
对新手.还是没什么用.好像我写的.都是没什么用的.干脆叫没什么用处系列好了….

基本概念.
堆.栈.其他
优化一般只关注堆栈即可.
堆存储对象.栈存储指针.
堆有.新生代老生代永生代

其实.就是一个推箱子的游戏..
考虑大小对象的话..可能更像华容道?

我们有一个大仓库.要存储很多箱子.有大的.有小的.
为了方便管理.存取.使用.
我把最基本最小的箱子.以及箱子的地址标签.放到一个叫栈的地方.
这个地方小一点.方便我处理问题.都是我当前工作要用到的东西.

区域划分:

剩下的.放到堆里..
不过.都放一起也有点乱.
常用的.要放到一个地方.用到多次的.放到一个地方..刚刚用到的.放到一个地方…
然后..按照一定的逻辑.对这些箱子进行管理.划分区域.
新生代.老生代.永生代

回收:

总是有些东西.要淘汰.
所以.一定时间,或者一定规则触发的时候.我就要对仓库进行整理.
当然这个整理.也是分层次的.
有的时候.我要全部整理,但大多时候.我整理新生代就好了.
另外.有些箱子太大了…我每次整理新生代.都要搞也有点烦..所以太大的.直接放老生代.

升级

这样.新生代里面都是一些刚出现的新箱子.一定时间后.我能确定他们是否常用.进行划分.
常用的升级到老生代.不用的淘汰掉.
老生代有些也一直淘汰不掉.就升级到永生带.

优化

一般情况下.我要知道我到底要处理些什么箱子.
全是大箱子…全是小箱子?
如果全是小箱子.使用频率都不高.用一两次就完活
我就让新生代大一点好了.这样.尽量减少回收的次数,

好多大箱子.存在的也久…那我要让老生带大一点了.

好多大箱子…还用两次就要扔…擦.你改代码.这活我干不好…

当然.实际会更复杂.更复杂怎么办呢.
再看细节文档.优化配置.配合压力测试.找到最适合自己系统的方案了.

你可能感兴趣的:(没什么用系列)