jvm
文章平均质量分 89
氵奄不死的鱼
日拱一卒,功不唐捐
展开
-
记一次堆外内存泄漏排查过程
最近把A,B两个服务合并成了一个服务。合并后上线两天后服务器开始报警,内存满了到服务器上使用top命令查看,jvm进程已经占了11g的内存(指的rss)。其中RSS( Resident Set Size )常驻内存集合大小,表示相应进程在RAM中占用了多少内存,并不包含在SWAP中占用的虚拟内存。即使是在内存中的使用了共享库的内存大小也一并计算在内,包含了完整的在stack和heap中的内存。原创 2023-07-30 14:16:23 · 1078 阅读 · 0 评论 -
JVM堆内存占用高好还是占用低更好
堆内存占用高或者低,这个问题并不能直接得到答案,还需要借助jvm的架空工具,比如jstat命令,查看gc次数,gc时间等。原创 2023-02-03 13:59:32 · 1091 阅读 · 0 评论 -
Java线程实现
我们知道,线程是比进程更轻量级的调度执行单位,线程的引入,可以把一个进程的资源分配和 执行调度分开,各个线程既可以共享进程资源(内存地址、文件I/O等),又可以独立调度。目前线程 是Java里面进行处理器资源调度的最基本单位,不过如果日后Loom项目能成功为Java引入纤程 (Fiber)的话,可能就会改变这一点。原创 2022-12-08 21:49:23 · 414 阅读 · 0 评论 -
Jvm之Gc-垃圾回收器
经典垃圾回收器建议了解gc基础知识后再看垃圾回收器gc基础知识如果说收集算法是内存回收的方法论,那垃圾收集器就是内存回收的实践者。《Java虚拟机规 范》中对垃圾收集器应该如何实现并没有做出任何规定,因此不同的厂商、不同版本的虚拟机所包含 的垃圾收集器都可能会有很大差别,不同的虚拟机一般也都会提供各种参数供用户根据自己的应用特 点和要求组合出各个内存分代所使用的收集器。 本节标题中“经典”二字并非情怀,它其实是讨论范围的限定语,这里讨论的是在JDK 7 Update 4 之后(在这个版本中正式提供了商用原创 2021-12-19 21:14:43 · 1207 阅读 · 0 评论 -
JVM之Gc基础知识
在学习垃圾回收器之前,了解垃圾回收的基础理论是十分必要对的,熟悉了基础知识,再学习垃圾回收器就可以轻易的理解。说起垃圾收集(Garbage Collection,下文简称GC),有不少人把这项技术当作Java语言的伴生产 物。事实上,垃圾收集的历史远远比Java久远,在1960年诞生于麻省理工学院的Lisp是第一门开始使 用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期时,其作者John McCarthy就思考过垃圾 收集需要完成的三件事情: ·哪些内存需要回收? ·什么时候回收? ·如何回收?原创 2021-12-18 16:56:23 · 1585 阅读 · 0 评论 -
类加载机制
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一 大步概述上一章我们学习了Class文件存储格式的具体细节,在Class文件中描述的各类信息,最终都需要加 载到虚拟机中之后才能被运行和使用。而虚拟机如何加载这些Class文件,Class文件中的信息进入到虚 拟机后会发生什么变化,这些都是本章将要讲解的内容。 Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最 终形成可以被虚拟机直接使用的Java类型,这个过程被称作虚拟机的类原创 2021-12-11 15:46:46 · 617 阅读 · 0 评论 -
类文件结构
字节码是jvm虚拟就能识别的,就像二进制01能被计算机识别Class类文件的结构解析Class文件的数据结构是本章的最主要内容。笔者曾经在前言中阐述过本书的写作风格:力求 在保证逻辑准确的前提下,用尽量通俗的语言和案例去讲述虚拟机中与开发关系最为密切的内容。但 是,对文件格式、结构方面的学习,有点类似于“读字典”,读者阅读本章时,大概会不可避免地感到 比较枯燥,但这部分内容又是Java虚拟机的重要基础之一,是了解虚拟机的必经之路,如果想比较深 入地学习虚拟机相关知识,这部分是无法回避的。 Java.原创 2021-12-11 15:44:26 · 366 阅读 · 0 评论 -
HotSpot虚拟机对象探秘
对象的创建Java是一门面向对象的编程语言,Java程序运行过程中无时无刻都有对象被创建出来。在语言层面 上,创建对象通常(例外:复制、反序列化)仅仅是一个new关键字而已,而在虚拟机中,对象(文 中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢? 当Java虚拟机遇到一条字节码new指令时,首先将去检查这个指令的参数是否能在常量池中定位到 一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那 必须先执行相应的类加载过程,本书第7原创 2021-11-27 16:10:41 · 836 阅读 · 2 评论 -
jvm内存区域
摘抄自 深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)周志明概述对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的“皇帝”,又是从事最基础工作的劳动人民——既拥有每一个对象的“所有权”,又担负着每一个对象生命从开始到终结的维护责任。对于Java程序员来说,在虚拟机自动内存管理机制的帮助下,不再需要为每一个new操作去写配对的delete/free代码,不容易出现内存泄漏和内存溢出问题,看起来由虚拟机管理内存一切都很美好。不过,也正是因为Java程序员把原创 2021-11-27 16:04:55 · 208 阅读 · 0 评论