java之JVM
静-修
我是一个善良、活泼开朗的小伙子;喜欢打篮球、游泳、跑步、阅读、旅游等;热爱编程,注重理论实践相结合的检验——千里之行,始于足下
展开
-
数据区域之堆栈
java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域, 这些区域都有各自的用途,创建和销毁时间 图: 程序计数器是一个较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行 号指示器,其中字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的 字节码指令(分支、循环、跳转、异常处理、线程...原创 2019-04-02 17:55:24 · 165 阅读 · 0 评论 -
内存溢出解决思路
一般出现的情况有1、内存中加载的数据量过于庞大,如一次从数据库取出过多数据2、集合类中有对对象的引用,使用完成后未清空,使得JVM不能回收3、代码中存在死循环或循环产生过多重复的对象实体4、使用的第三方软件中的BUG5、启动参数内存值设定的过小一般解决的方案有第一步:修改JVM启动参数,直接增加内存(-Xms,-Xmx参数)第二步:检查错误日志,查看"OutOfMemory"错误前是否有其它异常或错误第三步:对代码进行走查和分析,找出可能发生内存溢出的地雷位置第四步:使用内存查看工具动态查原创 2021-03-18 16:19:17 · 155 阅读 · 1 评论 -
JVM垃圾回收机制常见算法
1、引用计数器算法(废弃)引用计数器算法是给每个对象设置一个计数器,当有地方引用时计数器+1,引用失效时计数器-1,计数器为0时就垃圾回收。特点:引用计数器实现简单,效率高,但不能解决循环引用问题--每个对象生成独立的计数器。2、根搜索算法(使用)根搜索算法是通过一些"GC Roots"对象作为起点,从这些节点开始往下搜索,搜索通过的路径成为有引用链,当一个对象没有被GC Roots的引用链链接的时候,说明这个对象就垃圾回收。GC Roots对象包括:a...原创 2021-03-18 16:16:26 · 155 阅读 · 0 评论