- 博客(4)
- 收藏
- 关注
原创 内存分配策略
jvm给新生对象分配内存,从大方向来说,一般直接分配在Eden区。如果开启了本地线程缓冲区,会按照线程优先分配在TLAB Thread Local Allocation Buffer。少数情况下会将对象直接分配到老年代。 分配规则并不是一成不变。主要取决于垃圾收集的组合方式以及jvm参数设置。 以Serial和SerialOld为例说明分配策略,其他组合需要自行测试: 一般
2016-10-24 17:07:47 261
原创 垃圾收集器
为什么要回收内存 什么时候回收 如何回收 GC并非Java发明,最早使用的是LISP。 在Native Method Stack,VM Stack,Program Counting Register中,在线程执行的过程中,存在其中的数据能够自动的压栈弹栈。 但是Heap和Method Area则不同,如果某些对象并没有“死去”,有没有被回收,则有可能浪费了内存甚至有可能造
2016-10-20 09:18:25 213
原创 对象的创建,访问,内存布局
对象的创建 当VM遇到一条new的指令时,先查找常量池,看是否能定位到一个符号引用,检查类是否被类加载器加载、解析、初始化(?) 如果不满足检查条件,则进行类加载过程,在过程结束时可以确定需要分配给该类的内存大小 根据VM管理的堆内存是否规整--取决与垃圾回收器是否有压缩整理内存的功能--对于不规整的内存,采用FreeList方式给对象分配空间 如果规整则可以使用指针碰撞 bump the
2016-10-19 09:16:21 314
原创 JVM
jvm的内存自动管理机制 运行java程序时 jvm将其管理的内存划分为5块 1.本地方法栈 Native Method Stack 与VM Stack类型 服务于本地方法而非字节码文件 ∴ 一样有StackOverflowError和OOM 2.虚拟机栈 VM Stack Java方法的内存模型:执行时创建 Stack Frame 存储变量 操作数 出口等 局部变量表中存的有 编译器
2016-10-18 15:19:06 251
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人