随笔分类 -  【技术专区-JVM】

摘要:最近想测试下Openfire下的最大并发数,需要开大量线程来模拟客户端。对于一个JVM实例到底能开多少个线程一直心存疑惑,所以打算实际测试下,简单google了把,找到影响线程数量的因素有下面几个: -Xms intial java heap size -Xmx maximum java heap 阅读全文
posted @ 2020-04-20 17:55 洛神灬殇 阅读(290) 评论(0) 推荐(0) 编辑
摘要:问题 开发过程中,咱们经常需要使用不同的库版本,而这些版本又不是向后兼容的,或者出于某种原因需要支持同一库的多个版本。 在这种情况下,默认的类加载器已经是不支持了,因为 loadClass 方法只加载一次特定的类,之后所有的加载请求就直接返回现有 Class 实例的引用了。 解决办法 在这种情况下, 阅读全文
posted @ 2020-03-15 09:14 洛神灬殇 阅读(325) 评论(0) 推荐(0) 编辑
摘要:1.前提概要 jvm的attach的方式上如何重新定义class,里面也提到了最后attach时候会调用我们自定义的agent class的agentmain方法,在Instrumentation的接口里面实际上本身提供了redfineClasses的方法 也就是agentmain的方法只是一个调用 阅读全文
posted @ 2020-03-14 19:51 洛神灬殇 阅读(2173) 评论(1) 推荐(0) 编辑
摘要:类加载的生命周期: 加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载 加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 卸载 这6个阶段顺序是确定的,klass的加载过程一定会按照这个顺序执行。为了支持java的运行时绑定,解析阶段在某些情况下会在初始化之后 阅读全文
posted @ 2019-11-23 13:30 洛神灬殇 阅读(171) 评论(0) 推荐(0) 编辑
摘要:Java8内存模型—永久代(PermGen)和元空间(Metaspace) 一、JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。 1、虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创 阅读全文
posted @ 2019-11-22 22:22 洛神灬殇 阅读(223) 评论(0) 推荐(0) 编辑
摘要:基础参数系类(内存分配) -server:一定要作为第一个参数,在多个CPU时性能佳 -Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一-Xms:初始Heap大小,使用的最小内存,cpu性能高时此值应设的大一些-Xmx:Java heap最大值,使用的最大内存 阅读全文
posted @ 2019-11-22 21:07 洛神灬殇 阅读(241) 评论(0) 推荐(0) 编辑
摘要:1.JVM-堆快照(Snapshot) 1.1 输出方式-获取hprof文件 启动参数配置OOM时触发打印堆快照 (1)tomcat启动方式添加参数 (添加环境变量) export JAVA_OPTS= -XX:+HeapDumpOnOutOfMemoryError (表明进行统计相关heapDum 阅读全文
posted @ 2019-11-22 20:38 洛神灬殇 阅读(1730) 评论(0) 推荐(0) 编辑