jvm
文章平均质量分 68
波波仔86
生活与技术并发!
展开
-
什么时候发生GC
jvm中gc触发时机翻译 2022-08-13 14:48:55 · 2525 阅读 · 0 评论 -
Java利用ClassLoader实现类的热加载和卸载
最近做项目的时候遇到这个问题,就是在服务器不重启的情况下实现版本替换,即项目中一部分的类需要实时替换,甚至,对利用动态编译去生成很多临时类;那就需要解决两个问题:1.如何实现类的动态替换2.如何实现类的卸载当然,关于类的动态编译,我会在今后的文章中写出;一、实现类的动态替换:首先,同名同包的类,在静态编译的时候是肯定无法通过的,在运行时也一定不行;这是为什么呢?因为,所有的类,...转载 2020-04-05 22:19:21 · 4851 阅读 · 0 评论 -
深度分析Java的ClassLoader机制(源码级别)
Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中,JVM在加载类的时候,都是通过ClassLoader的loadClass()方法来加载class的,loadClass使用双亲委派模式。为了更好的理解类的加载机制,我们来深入研究一下ClassLoader和他的loadClass()方法。先来认识...转载 2020-04-05 14:33:38 · 400 阅读 · 0 评论 -
JVM调优之jstack找出最耗cpu的线程并定位代码
原文源自:https://blog.csdn.net/u010214092/article/details/77749068第一步:先找出java的进程Id(PID) 假设java应用名称是zcg_commodity ps -ef|grep zcg_commodity 得到进程Id为32464第二步:找出该进程内最消耗CPU的线程 top -Hp pid输入top -Hp 3...转载 2018-12-04 09:36:21 · 241 阅读 · 0 评论 -
总结JVM面试题
原文源自:https://www.jianshu.com/p/54eb60cfa7bd JVM运行内存的分类 程序计数器:当前线程所执行的字节码的行号指示器,用于记录下一条要运行的指令,线程私有 注:如果正在执行的是Native方法,计数器值则为空 Java虚拟栈:存放基本数据类型、对象的引用、方法出口等,线程私有 Native方法栈:和虚拟栈相似,只不过它服务于Native...转载 2018-09-11 21:12:35 · 301 阅读 · 0 评论 -
虚拟机字节码执行引擎——方法调用
方法调用并不等同于方法执行,方法调用阶段唯一的任务就是确定被调用方法的版本(即调用哪一个方法),暂时还不涉及到方法内部的具体运行过程。Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址。这使得java有着更强大的动态扩展能力,但也使得java方法的调用过程变得相对复杂起来,需要在类的加...原创 2018-07-24 21:26:36 · 162 阅读 · 0 评论 -
从一道面试题来认识java类加载时机与过程
1、开门见山以前曾经看到过一个java的面试题,当时觉得此题很简单,可是自己把代码运行起来,结果并不是自己想象的那样,题目如下:class SingleTon {private static SingleTon singleTon = new SingleTon();public static int count1;public static int count2 =...原创 2018-07-12 21:53:45 · 213 阅读 · 0 评论 -
java 虚拟机运行时栈帧结果
运行时栈帧结构 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态链接和方法返回地址等信息。每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机里面从入栈到出栈的过程。 每一个栈帧在编译程序代码的时候所需要多大的局部变量表,多深的操作数栈都已经决定了,并且写入到方发表...转载 2018-07-23 19:20:50 · 345 阅读 · 0 评论 -
JVM调优总结 -Xms -Xmx -Xmn -Xss
Xms 是指设定程序启动时占用内存大小。一般来讲,大点,程序会启动的快一点,但是也可能会导致机器暂时间变慢。Xmx 是指设定程序运行期间最大可占用的内存大小。如果程序运行需要占用更多的内存,超出了这个设置值,就会抛出OutOfMemory异常。Xss 是指设定每个线程的堆栈大小。这个就要依据你的程序,看一个线程大约需要占用多少内存,可能会有多少线程同时运行等。以上三个参数的设置都是默认以Byte为...转载 2018-07-04 21:59:25 · 297 阅读 · 0 评论 -
JVM内存区域划分Eden Space、Survivor Space、Tenured Gen、Perm Gen解释
jvm区域总体分两类,heap区和非heap区。heap区又分:Eden Space(伊甸园)、Survivor Space(幸存者区)、Tenured Gen(老年代-养老区)。 非heap区又分:Code Cache(代码缓存区)、Perm Gen(永久代)、Jvm Stack(java虚拟机栈)、Local Method Statck(本地方法栈)。HotSpot虚拟机GC算法采用...原创 2018-06-26 20:47:33 · 328 阅读 · 0 评论 -
java.lang.OutOfMemoryError: Java heap space错误
Java heap space,Java应用程序创建的对象存放在这片区域,垃圾回收也发生在这块区域。通常一些比较“重型”的操作可能会导致该异常,比如:需要创建大量的兑现个,层次比较深的递归操作等。解决方案有两种,一是优化应用,找到消耗大量内存的地方,然后优化代码或者算法。这种方式比较推荐,但是难度比较大,尤其是在产品环境中出现这种问题,开发人员不能很好的重现问题。第二种方案是提升Java ...原创 2018-06-05 13:32:05 · 1057 阅读 · 1 评论 -
java.lang.OutOfMemoryError:GC overhead limit exceeded错误
java主要有3种比较常见的OutOfMemory Error:java.lang.OutOfMemoryError: Java heap spacejava.lang.OutOfMemoryError:PermGen spacejava.lang.OutOfMemoryError: GC overhead limit exceeded今天遇到了GC overhead limit exceeded...原创 2018-06-05 13:25:18 · 3473 阅读 · 1 评论