导航菜单
路很长,又很短
博主信息
昵   称:Cocodroid ->关于我
Q     Q:2531075716
博文数:356
阅读量:1663813
访问量:207489
至今:
×
博文->>搜索结果(耗时0.029秒) 博文列表>>
Tags : 笔记,JVM,内存区域结构,Java 发表时间: 2020-03-26 00:08:42
1程序计数器一块较小的内存空间。当前线程所执行的字节码的行号指示器。2虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈(StackFrame)用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。局部变量表(存放)基本数据类型对象引用returnAddress类型(指向了一条字节码指令的地址)异常StackOverflowError:线程请求的栈深度大于虚拟机所允许的深度OutOfMemoryError:栈扩展时无法申请到足够的内存3本地方法栈虚拟机使用到
类别:Java | 阅读(884)| 回复(0)| (0) 阅读全文>>
Tags : Java,对象 发表时间: 2020-03-20 23:24:34
题外话:Java都有对象,那你的对象在哪里呢?那我也来new一个吧。了解下Java是怎么创建对象,并且在内存布局和访问定位,可以很好的帮助我们认识虚拟机JVM底层的原理。这里只是针对HotSpot虚拟机Java对象。1对象的创建■创建过程【虚拟机视角】1、检查这个指令的参数是否能在常量池中定位到一个类的符号引用2、检查这个符号引用代表的类是否已被加载、解析和初始化过3、类未被加载,那必须先执行相应的类加载过程4、为新生对象分配内存5、对象实例字段初始化零值6、对象必要设置①对象是哪个实例②如何才能找到类的元数据信息、对象哈希码(调用hashCode时计算)、对象的GC分代年龄等信息。【程序视角
类别:Java | 阅读(878)| 回复(0)| (0) 阅读全文>>
Tags : Linux,Java,特殊字符 发表时间: 2020-03-06 20:24:56
最近在用java远程Linux上执行Shell命令,通过ganymed-ssh2jar包进行连接,然后执行完命令获得执行结果等数据的处理,将结果打印在日志里,并且使用VIM打开日志文件查看,出现:也就是出现这些很奇怪的字符(一脸懵~),非常影响查看和让人很疑惑。通过网上查找资料发现原来是:^M是ascii中的'\r',回车符,是16进制的0x0D,8进制的015,十进制的13。其实这个主要是unix和dos上对换行的区别,unix上是\n,dos上是\r\n。^M并不是按键shift+6产生的^和字母M,,生成它的办法是在Vim模式上先按CTRL+V,然后再回车(或CTRL+M)。^H是asc
类别:Linux | 阅读(8797)| 回复(0)| (12) 阅读全文>>
Tags : 我,Java,工作,经历 发表时间: 2017-08-06 05:56:03
Cocodroid2531075716At企鹅.comJava高级工程师【个人简述】:5年Java后端开发经验,有互联网O2O、电商系统、车联网IoT、互联网金融等项目开发经验。当前在基础架构组负责开发和维护基础组件和服务,参与CodeReview、方案评审及设计,丰富的互联网项目开发经验。关注分布式、微服务、系统架构、开源技术等。【经历简述】:1、个人网站和博客网站:权限、备份/还原、系统监控等功能,基于SSH、Shiro、MySQL、ES搜索引擎等技术。2、互联网彩票O2O投注系统:爬虫获取开奖信息等功能,基于SSH、MySQL等技术。3、互联网电商导购:搜索产品信息优化、微信活动等功能,
类别:苏说 | 阅读(2658)| 回复(2)| (7) 阅读全文>>
Tags : 技术,读书,Java,后端开发 发表时间: 2018-07-15 14:15:39
记录下,我读过的书。并且把自己觉得书的质量好坏给个评分(0-10),只是我个人的观点评分,仅供参考。12、《云原生应用架构实践从单体到服务化演进》——7.3分网易云出品,言简意赅的讲了云原生应用架构的挑战,并且文中嵌入了网易云的相关产品介绍,可以看得出网易云10多年技术的积累,所以其技术应该也得到肯定。架构从单体到服务化的演进,从初创期、成长期、到最后的稳定期,描述了每阶段关注的重点及其方向,以及每阶段架构上需要考虑的东西,并且文中也有跟Docker和k8s相关容器技术。总体而言,本书不错,初学者不建议阅读,有经验者或者对微服务架构等有所了解读起来毫无压力。2019.07.1811、《Rock
类别:苏说 | 阅读(1838)| 回复(0)| (1) 阅读全文>>
Tags : java,锁,多线程,wait 发表时间: 2018-07-29 22:52:48
在学习多线程的时候,是一定会遇到wait的。那么这里有一个疑惑?为什么wait一定得放在while内?不能放在if内呢?为了探究是为什么,这里写了个demo来验证下。1、使用if来判断临界条件/***@authorCocodroid*@create2018-07-2921:52*/publicclassWaitNotifyThread{privateQueue<Integer>queue=newLinkedList<>();publicvoidput(Integerdata){System.out.println("----put----");synchronized(
类别:Java | 阅读(1853)| 回复(1)| (2) 阅读全文>>
Tags : 线程,操作系统,java 发表时间: 2017-11-30 00:41:13
针对于Java线程和OS线程之间的关系,下面我以下面的问题来分析:1、操作系统的线程①操作系统线程的实现有三种:用户级线程ULT(UserLevelThreads)、内核支持线程KST(KernelSupportedThreads)、前两者的组合。用户级线程:在用户空间实现的内核级线程:在OS内核空间实现的。设置用户级线程的系统,调度是以进程为单位的。设置了内核级进程的而是以线程为单位进行调度的。②内核线程的优缺点:优点:a.内核可以在多处理器系统中调度同一进程中的多个线程并行执行。b.如果某一个进程中的线程阻塞了,可以跨进程调度其他线程进行执行c.线程的切换速度快,开销小。并且内核本身支持多
类别:Java | 阅读(6149)| 回复(0)| (3) 阅读全文>>
Tags : Java,垃圾回收 发表时间: 2017-09-23 04:39:22
对Java垃圾回收最大的误解是什么?它实际又是什么样的呢?当我还是小孩的时候,父母常说如果你不好好学习,就只能去扫大街了。但他们不知道的是,清理垃圾实际上是很棒的一件事。可能这也是即使在Java的世界中,同样有很多开发者对GC算法产生误解的原因——包括它们怎样工作、GC是如何影响程序运行和你能对它做些什么。因此我们找到了Java性能调优专家HaimYadid,并把名为Javaperformancetuningguide的文章发表在Takipi的博客上。最新博文:关于垃圾回收被误解的7件事http://t.co/3QJLJuKCRqpic.twitter.com/aqQEF0zTkK—Takip
类别:Java | 阅读(1424)| 回复(0)| (0) 阅读全文>>
Tags : 电商,Java,面试题 发表时间: 2017-05-25 15:56:02
这份题目是某个群友分享他面某电商的Java面试题,特此我也分享给广大Javaer们,祝你们尽量找到满意的工作。下面有些面试题已经找了一些答案(只供参考,只是个人找的,难免有误,请指正!),一些还没找到没整理,如果你知道答案,麻烦评论回复下,让我更新,希望这样能够帮助更多的人。1、什么情况下会产生死锁问题产生死锁的原因:一是系统提供的资源数量有限,不能满足每个进程的使用;二是多道程序运行时,进程推进顺序不合理。产生死锁的必要条件是:1、互斥条件;2、不可剥夺条件(不可抢占);3、部分分配;4、循环等待。2、多集群下事务并发,也没法模拟3、并发包的锁跟syncronized的区别4、获取锁有哪些方
类别:面试 | 阅读(2745)| 回复(0)| (2) 阅读全文>>
Tags : Java面试题 发表时间: 2017-04-11 14:44:35
这是我前同事2017.02在广州面试某金融公司的面试题,大概就这些,分享下给你们。^_^1、NIO和IO区别2、Spring事务代码3、Linux安装源码命令(某软件吧)4、单点登录5、如何监控服务器6、JS如何实现对象编程7、项目中遇到最大的问题,怎么解决8、vi的常用命令
类别:面试 | 阅读(1897)| 回复(0)| (0) 阅读全文>>
Tags : JAVA,字节码,动态代理 发表时间: 2021-11-12 08:00:25
灵宝天尊八戒技术团队在字节码增强解密(上)的章节中,给大家介绍了字节码的基本结构、主流的字节码增强构架、以及各个架构的优缺点和应用建议。在本章节中,将从字节码的重载、JavaAgent、DynamicAttach、以及对在线Debug的高级应用展开分析,给大家详细分解下字节码增强的实际应用。让你真正体会下字节码增强技术带来的丝般顺滑体验。一、字节码的重载在上一章节中,我们介绍了使用ASM、CGlib和Javassit字节码增强框架来对Class字节码文件进行增强,并且在我们的示例中,使用新的Main函数来启动程序并进行功能增强。但在实际的应用当中,这似乎并不符合我们的要求,因为我们的系统一直都
类别:Java | 阅读(74)| 回复(0)| (0) 阅读全文>>
Tags : JAVA,字节码,动态代理 发表时间: 2021-11-12 07:58:57
灵宝天尊八戒技术团队字节码增强:指的是在Java字节码生成之后,对其进行修改,增强其功能,这种方式相当于对应用程序的二进制文件进行修改。为什么要进行字节码增强呢?字节码增强可以用在什么地方呢?如何对字节码进行增强?增强的手段都有哪些?一起来看看吧做为JAVA开发,你应该无数次的听过一句话:一次编译,到处运行。没错,这是JAVA的优势,但你有没有想过这究竟是为什么呢?Why???是因为有JVM虚拟机,以及格式固定的Class字节码文件!要运行于不同的机器,只需针对不同的硬件开发不同的JVM即可。而本次主题字节码增强的核心则在于:因为有JVM规范的存在,只要最终可以生成符合规范的字节码就可以在JV
类别:Java | 阅读(115)| 回复(0)| (0) 阅读全文>>
Tags : Java,压缩算法 发表时间: 2015-01-06 15:55:01
本文将会对常用的几个压缩算法的性能作一下比较。结果表明,某些算法在极端苛刻的CPU限制下仍能正常工作。文中进行比较的算有:JDKGZIP——这是一个压缩比高的慢速算法,压缩后的数据适合长期使用。JDK中的java.util.zip.GZIPInputStream/GZIPOutputStream便是这个算法的实现。JDKdeflate——这是JDK中的又一个算法(zip文件用的就是这一算法)。它与gzip的不同之处在于,你可以指定算法的压缩级别,这样你可以在压缩时间和输出文件大小上进行平衡。可选的级别有0(不压缩),以及1(快速压缩)到9(慢速压缩)。它的实现是java.util.zip.De
类别:Java | 阅读(1343)| 回复(0)| (0) 阅读全文>>
Tags : java,gc,cms,g1 发表时间: 2019-03-06 23:08:53
GC策略在G1还没成熟的情况下,目前主要有串行、并行和并发三种,对于大内存的应用而言,串行的性能太低,因此使用到的主要是并行和并发两种,具体这两种GC的策略在深入JVM章节中已讲解,并行和并发GC的策略通过-XX:+UseParallelGC和-XX:+UseConcMarkSweepGC来指定,还有一些细节的配置参数用来配置策略的执行方式,例如:-XX:ParallelGCThreads、-XX:CMSInitiatingOccupancyFraction等,新生代对象回收只可选择并行,在此就举例来看看两种GC策略在FullGC时的具体表现状况。测试GC策略状况的代码如下:publiccla
类别:Java | 阅读(773)| 回复(0)| (0) 阅读全文>>
Tags : java,jstack,线程 发表时间: 2019-03-06 22:52:48
1.概述随着系统日益增大,代码结构日渐复杂,经过验收测试的系统可能在实际生产环境下表现的一塌糊涂,也可能非常棒。因此通过QA并不能保证系统不会发生内存泄漏,往往流量越大泄露的越快,最后导致系统崩溃。比如在某个时间点系统一直出现TimeOut、或者系统突然处理速度急剧下降等问题。对于开发人员就非常棘手了,很多人根本一头雾水,基本上就是拍脑袋瞎猜了。其实发现此类问题定位的技术主要有内存泄漏定位、线程堆栈分析等。线程堆栈概述线程堆栈也就是所谓的线程调用栈(都是独立的),在Java线程堆栈式JVM线程状态的一个瞬时快照,快照包含了当前时刻所有线程的运行状态,包括每一个线程的调用栈,锁的持有等信息。每个
类别:Java | 阅读(1629)| 回复(0)| (0) 阅读全文>>
Tags : Java,本地内存,NMT ,pmap 发表时间: 2019-03-04 22:35:34
背景其他团队的一些同事经常问我一个问题:你的Java进程怎么占了那么多VirtualSize和RSS?最近,我基本上可以回答清楚这个问题了。用NMT和pmap基本就就能搞清楚Java进程为什么占了那些VirtualSize和RSS。NMT是NativeMemoryTracking的缩写,是Java7U40引入的HotSpot新特性。pmap,众所周知,就是Linux上用来看进程地址空间的。结论开门见山,我们先说分析结果,在pmap的输出中,如下两条就包含了Java的Heap空间。STARTSIZERSSPSSDIRTYSWAPPERMMAPPING00000000d54aa00092824K9
类别:Java | 阅读(1741)| 回复(0)| (0) 阅读全文>>
Tags : Java,内存泄漏,JVM,Heap Dump,MAT 发表时间: 2019-03-04 22:19:42
正如ThreadDump文件记录了当时JVM中线程运行的情况一样,HeapDump记录了JVM中堆内存运行的情况。可以通过以下几种方式生成HeapDump文件:使用jmap命令生成jmap命令是JDK提供的用于生成堆内存信息的工具,可以执行下面的命令生成HeapDump:1jmap-dump:live,format=b,file=heap-dump.bin<pid>其中的pid是JVM进程的id,heap-dump.bin是生成的文件名称,在执行命令的目录下面。推荐此种方法。使用JConsole生成JConsole是JDK提供的一个基于GUI查看JVM系统信息的工具,既可以管理本地
类别:Java | 阅读(2914)| 回复(0)| (0) 阅读全文>>
Tags : Java,堆外内存 发表时间: 2019-03-04 00:10:02
最近排查一个线上java服务常驻内存异常高的问题,大概现象是:java堆Xmx配置了8G,但运行一段时间后常驻内存RES从5G逐渐增长到13G#补图#,导致机器开始swap从而服务整体变慢。由于Xmx只配置了8G但RES常驻内存达到了13G,多出了5G堆外内存,经验上判断这里超出太多不太正常。前情提要–JVM内存模型开始逐步对堆外内存进行排查,首先了解一下JVM内存模型。根据JVM规范,JVM运行时数据区共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建。栈里面存着的是一种叫“栈帧”的东西,每个方法会创建一个栈帧,栈帧中存放了局
类别:JVM | 阅读(5920)| 回复(0)| (0) 阅读全文>>
Tags : 内存, JVM, Linux, 分析, Java 发表时间: 2017-09-27 22:19:35
引言在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约600m,Linux自身使用大约800m。从表面上,物理内存应该是足够使用的;但实际运行的情况是,会发生大量使用SWAP(说明物理内存不够使用了),如下图所示。同时,由于SWAP和GC同时发生会致使JVM严重卡顿,所以我们要追问:内存究竟去哪儿了?要分析这个问题,理解JVM和操作系统之间的内存关系
类别:JVM | 阅读(1317)| 回复(0)| (0) 阅读全文>>
Tags : 部类, 静态, java, Singleton, demo 发表时间: 2017-09-24 00:54:01
一、单例  单例是一个常见的设计模式,常见有四种方式来实现,即懒汉式、饿汉式、枚举和静态内部类实现,这个模式的本质是为了控制内存中某个类的实例数量。  懒汉式采用懒加载,时间换空间,因此需要注意获取实例时的并发安全问题,即便正确并发,每次获取实例的时候还是要浪费一次判断;饿汉式空间换时间,在定义单例对象时就完成实例化,因为JVM在初始化一个类的时候(即调用类构造函数())会自动同步,因此不用关心线程安全问题,
类别:Java | 阅读(1080)| 回复(0)| (0) 阅读全文>>