【JVM】运行时内存分配

程序计数器

用于标识线程执行到了字节码文件(class文件)的哪一行,当执行native方法时,值为undefined,各个线程私有

Java虚拟机栈

每个线程独有,每个方法执行时会创建一个栈帧,用于存储局部变量表等方法信息,即方法的执行会伴随着一个栈帧的入栈出栈。

栈帧的组成

 

 

如果线程请求的栈深度大于虚拟机允许的最大深度,将抛出StackoverflowError异常

栈最大深度由栈内存大小和局部变量表大小确定,即栈大小固定,局部变量表越大,栈深度越小,栈大小可通过-Xss参数设置,默认为1m

如果栈动态扩展失败,会抛出OutOfMemoryError异常,不过hotspot虚拟机不支持栈动态扩展,申请时失败了,会抛出OOM异常

本地方法栈

 虚拟机执行native方法时使用,与Java虚拟机栈类似,hotspot将二者合在一起

Java堆

用于存储Java实例对象,垃圾收集器管理的内存区域,也称为GC堆(Garbage Collected Heap)。垃圾收集就发生在该区域,一般分为eden,servivor1,servivor2,old。

另外在Java8之前还有一个永久代,不过永久代实际上不属于堆内存,属于虚拟机内存,同时受垃圾收集器管理(fullgc时触发垃圾回收)。Java8之后删除了永久代,将方法区移动至元空间(Metaspace),使用native内存,移除虚拟机,防止OOM异常,元空间大小可以通过 -XX:MaxMetaspaceSize参数控制,fullgc时会对元空间进行垃圾回收;将字符串常量(JDK 7)迁移到Java堆中。

Java堆所有线程共享,不过可以通过设置TLAB(ThreadLocalAllocationBuffer)给各线程预留内存,提高内存分配时的效率。

Java堆可以通过-Xms和-Xmx设置初始大小和最大大小(虽然现在的项目一般将两个值设为相同以减少GC次数),当动态申请内存不足时,会抛出OOM异常。

方法区

用于存储已经被Java虚拟机加载的类型信息,常量,静态变量和即时编译器编译后的代码缓存等数据。Java8之前通过永久代实现,Java8之后通过元空间实现,实际为一个逻辑内存区域,多线程共享。Java的元空间会在fullgc时进行垃圾回收,主要进行类的卸载时方法区的垃圾回收。当内存分配出现不足时,会抛出OOM异常。

运行时常量池

属于方法区的一部分,用于存储类的版本,方法,字段,接口等描述信息,同时接受新的常量,例如String.intern()方法将字符串放入常量池中,实际将char[]存储到堆中的字符串常量池中,将引用存储到运行时常量池中。当内存不足时,抛出OOM异常。

注意,运行时常量池不等于字符串常量池,上面说了,字符传常量池在(JDK 7后移入)堆(老年代)中,而运行时常量池实际存储在元空间中

直接内存

直接内存不属于JVM虚机内存的一部分,属于native内存,JDK1.4后推出的NIO即可以直接操作Native内存,通过在Java堆中创建DirectByteBuffer对象控制Native内存。

本文转载于网络 如有侵权请联系删除

相关文章

  • 用行星轨道竟能鉴别「渣男」!56岁中科院物理学家直播引百万网友围观

    【新智元导读】打开物理新方式。近日,中科院物理学家曹则贤亲自在线教百万网友,用行星轨道鉴别「渣男」。|还在纠结会不会错过元宇宙和web3浪潮?清华大学科学史系副教授胡翌霖,这次给你讲个透!你会用行星轨道判定「渣男」吗?为什么他分明离开我了,还一直坚持说喜欢我?这不是「渣」是什么?别急!这里面门道太多了。这不,中科院物理所「网红」曹则贤老师在线,亲自为百万网友解答。两个人恋爱就好比地球和卫星,对方能力小的时候就会围绕着你转。当对方能力变强时,绕着你的可能就是抛物线,并会在某一点逐渐远离你。最后,曹则贤的总结一语道破,「很多人这个时候失恋了,就怪对方渣,但其实是你能力差,你没有强大的吸引力把人留住」网友表示,物理学好了,还是很有用处的!短视频,大智慧说起曹则贤,他的出圈可不仅仅是靠这一个视频。抖音上有个粉丝128.3万的账号,叫「国科大」。而一看蓝v认证,这不就是中国科学院大学的官方号嘛。而翻看最近的3个视频,都是曹老师的讲课实录。有网友表示,「虽然听不懂,但还想听。」这也从侧面体现了,曹老师讲课的生动有趣。稍微看几个视频就能发现,曹老师会讲很多生动的例子帮助理解复杂的原理。比方说,在一期

  • fastjson为何使用TypeReference?

    1核心接口及类fastJson的泛型反序列化场景经常使用到TypeReference,如下示例:publicstaticvoidmain(String[]args){ List<String>list=newArrayList<String>(); list.add("1"); list.add("2"); JSONObjecto=newJSONObject(); o.put("k",list); List<String>types=o.getObject("k",List.class); System.out.println(JSON.toJSONString(types)); List<String>types2=o.getObject("k",newTypeReference<List<String>>(){}); System.out.println(JSON.toJSONString(types2))

  • 特征检测之Harris角点检测

    预备数学实对称矩阵如果有n阶矩阵A,其矩阵的元素都为实数,且矩阵A的转置等于其本身,则称A为实对称矩阵。性质:实对称矩阵A的不同特征值对应的特征向量是正交的;n阶实对称矩阵A必可相似对角化,且相似对角阵上的元素即为矩阵本身特征值。对角化:优点:满秩的对角方阵,可以直接看出特征值,特征向量等重要特征。卷积算子—Sobel算子主要用于边缘检测,分别对水平和垂直方向上的边缘敏感。对图像任意一点使用会产生对应的梯度矢量或者其法矢量。对噪声具有平滑抑制作用,但是得到的边缘较粗,且可能出现伪边缘。该算子包含两组3x3的矩阵,分别为横向及纵向,将之与图像作平面卷积,即可分别得出横向及纵向的亮度差分近似值。如果以A代表原始图像,及分别代表经横向及纵向边缘检测的图像,其公式如下:G_x=\left[\begin{array}{cccc}-1&0&+1\\-2&0&+2\\-1&0&+1\end{array}\right]*A and G_y=\left[\begin{array}{cccc}-1&+2&+1\\0&0&0\\

  • Day3.数据挖掘初探:亲和性分析-商品推荐

    学了一段时间的数据可视化和NumPy库的使用,是不是很想伸手施展一下,但是用Python进行数据分析和挖掘还是要有一定的基础储备才可以的,其中涉及到算法、统计学、工程学、最优化理论和计算机等相关领域的知识和概念,越往深入,可能还需要一些地理,城市规划、经济金融等其他领域的知识和概念。要充分发挥数据挖掘的威力,还需要整合相关领域的知识。不知道你有没有听过Walmart-沃尔玛依靠数据挖掘分析出啤酒和尿布陈列在一起可以提高销量的故事,亦或是我们在网上的浏览和搜索记录给广告商提供了信息,当我们打开程序时便会受到相关产品的推荐,这些都可以算作数据挖掘的应用。虽然数据挖掘对不同问题的实现细节可能千差万别,但是从抽象的来看,是大同小异。数据挖掘第一步是创建数据集,它能描述真实世界的某一方面。数据集主要包括样本和特征,样本可以是一本书,一个人,一个动物或是其他物体;特征用来描述样本,特征可以是长度、数量、金额等。准备好了数据之后,就是调整算法,如果特征符合什么样的要求,就把它归为一类,比如统计得出成年男性的平均身高为170cm,一个男性的身高大于170算作“高”,小于170算作“矮”。从数据集中抽取

  • 勒索病毒Globelmposter来袭,数据备份你做好了吗?

    背景GlobeImposter勒索病毒从2017年出现,持续活跃至今。图.令人谈虎色变的勒索病毒事件最新3.0版本会将文件加密后,改为动物名+4444这样的后缀,例如Tiger4444、Horse4444等。3.0版本除了原本具备的攻击手法丰富之外,最蛋疼的是对公钥也进行了加密,相比之前公钥写死在代码中可以被扒出来相比,现在感染病毒只能从作者获得公钥后才能解密,制作免费解密工具的难度进一步提高。病毒不断升级换代,即便本次消灭了3.0,日后难保不会出现4.0、5.0等。相比与之不断斗智斗勇,合理的安全策略无疑才是上上之策。敌军围困万千重,我自威然不动。 早已森严壁垒,更加众志成城。 --毛泽东《西江月·井岗山》 一九二八年秋做好安全防护安全防护问题是老生常谈了,这里不展开讨论,总结下来无非就是:1.关闭无用端口和服务。此次病毒传播途径主要通过3389端口,通过RDP远程桌面;以及445端口,通过Samba服务传播。建议关闭相应端口,或提高安全配置,例如禁止Samba中运行可执行文件;2.及时升级软件和补丁。Samba3.5.0~4.6.4之间的版本均会受到影响,官方已经发布了补丁版本,建

  • 多达 95% 的 HTTPS 链接能被黑客劫持

    HSTS是一个被当前大多数Web浏览器所支持的Web安全策略,它可以帮助Web管理员保护他们的服务器和用户避免遭到HTTPS降级、中间人攻击和Cookie劫持等HTTPS攻击的危害。由于服务器管理员没能正确设置 HTTPStrictTransportSecurity(HSTS),现今大量的HTTPS流量都能被轻松劫持。 95% 的HTTPS连接处于风险中据最近的 Netcraftstudy 报告数据显示,当前多达95%的服务器所运行的HTTPS没有正确地设置HSTS或其它配置,以至于将HTTPS连接暴露于上述攻击风险之中。 更值得注意的是,Netcraft在三年前进行的同样扫描,不正确配置的HSTS比例仍同现在一样。这表明Web管理员们并没有学会或被告知如何正确地设置HSTS。 针对这些不安全的站点的最容易的攻击场景是HTTPS降级攻击,攻击者可以选择多种方式来迫使一个看起来安全的HTTPS连接根本不使用数据加密或使用更弱的算法,这样攻击者就可以进行数据窃取了。据安全研究人员称,在这95%的没有正确设置HSTS的站点中,有很多银行和金融机构的网站。你可以通过下面一行配置激活你的HSTS

  • NASA最新消息:土卫二可能具备生命所需全部条件

    按要求转载自:新浪科技(techsina)编译|叶子据国外媒体报道,两项开展已久的NASA任务为我们提供了木星和火星卫星的新信息,进一步凸显了太阳系和其它星系中“海洋星球”的科学价值。此次探测结果要归功于NASA的卡西尼号探测器和哈勃太空望远镜,于美国时间4月13日发布。参与卡西尼号任务的科学家在论文中宣布,他们在土卫二表面发现了一种可供生命利用的化学能量形式。哈勃望远镜的研究人员则汇报了木卫二表面喷出的羽状物的最新细节。视频内容“我们一直在寻找拥有宜居环境所需物质的星球,而这是我们离这一目标最近的一次。”NASA科学任务董事会副行政官托马斯·泽尔布肯(ThomasZurbuchen)表示,“这些观测结果体现了NASA科学任务的本质:弄清我们是否为宇宙中唯一的生命。”图为2015年卡西尼号穿越土卫二羽状物时的情景。卡西尼号探测器和哈勃望远镜对海洋星球的最新观测结果有助于我们在未来搜寻外星生命。卡西尼号任务的论文被发表在期刊《科学》上。论文中指出,土卫二海床中的地热活动产生的氢气正源源不断地涌入地下海,而氢气可作为生命的化学能来源。土卫二中富含氢气,说明若地下海中存在微生物,便可将氢气与

  • 飞行机器人BeeRotor:用视觉控制飞行

    人类保持平衡需要身体多个部位进行配合,其复杂性和精密性无法直接复制到机器人身上。因此,机器人需要采用加速计测量重力加速度,获取自身横向和纵向倾斜的角度,从而保持地平线的水平。无论地形多么崎岖,都可以根据重力来保持平衡。虽然有研究指出,飞行的昆虫是通过重力来感知方向进行导航,实际上,这些研究也表明,这些昆虫也大部分通过视觉控制飞行,即通过复眼视网膜感知周围环境的光流信息。 这种基于视觉的感知机制激发了研究者FabienExpert和埃克斯·马赛大学研究机构InstitutdesSciencesduMouvementEtienne-JulesMarey的FranckRuffier,他们共同打造了一款受到蜜蜂飞行启发的飞行机器人BeeRotor。 该机器人重80g,长47cm。能够沿着不平坦的地势飞行,并通过安装在“眼睛”部分的光流传感器(OpticalFlowSensor)避开障碍物。虽然不测量重力和加速度,但是通过该传感器直接“看到”它的地理位置。 为了更加精确复制昆虫通过感知光流信息控制飞行的能力,研究者们在BeeRotor的“眼睛”上下方安装了24个光电二极管,让机器人感知周围

  • 【方向盘】升级到IDEA 2022.1版本后,我把Maven Helper卸载了

    本文已被https://yourbatman.cn收录;女娲Knife-Initializr工程可公开访问啦;程序员专用网盘https://wangpan.yourbatman.cn;技术专栏源代码大本营:https://github.com/yourbatman/tech-column-learning; 你好,这里是Java方向盘,我是方向盘(YourBatman),坐稳扶好,开始发车。TitleLink所属专栏【方向盘】-IntelliJIDEA源代码https://github.com/yourbatman/FXP-java-ee程序员专用网盘公益上线啦,注册送1G超小容量,帮你实践做减法https://wangpan.yourbatman.cnJava开发软件包(Mac)https://wangpan.yourbatman.cn/s/rEH0提取码:javakit女娲工程http://152.136.106.14:8761版本约定[IntelliJIDEA2022.1.1]之前有追写过多篇IDEA新特性的文章,每篇都能被CSDN官方首页推荐/公众号转载:IntelliJIDE

  • easydarwin + ffmpeg 实现海康摄像头 rtsp 视频直播(vlc播放器可以播放,但H5以及各种flash播放器播放黑屏的问题)

    最近有个小朋友在家门口装了一个工业用海康摄像头(仅仅只有个摄像头)通过如下链接拉取视频流 rtsp://admin:Aa123456@192.168.10.35:554/Streaming/Channels/101 问题来了,想直接用rtsp这个链接想在网页上直接打开播放还是有些难度的,早起版本的浏览器还可以使用VLC播放器的插件来实现,但现代浏览器都不支持这个插件了,这时我们找到了免费开源软件EasyDarwin开源流媒体服务器,官网http://www.easydarwin.org/ 进入挂网,点击下载 此软件想要实现推流需要借助FFmpeg工具官网http://www.ffmpeg.org/,点击下载Windows版本 下载后我们得到两个工具包如图 进入easydarwin工具包 主要是修改这两个配置,注意ffmpeg_path路径配置后bin后面再加/ffmpeg否则生成不了rtsp直播文件m3u8以及ts文件 修改后点击EasyDarwin.exe可以先启动服务 访问http://192.168.10.100:10008/#/

  • Django基础之中间件

    1.引入 在之前学习的过程中,已经学会了给视图函数加装饰器来判断用户是否登录,把没有登录的用户请求跳转到登录页面。 我们通过给几个特定视图函数加装饰器实现了这个需求。 但是以后添加的视图函数可能也需要加上装饰器,这样显得稍微有些繁琐。 但是,通过中间件就可以采用更适宜的方式来实现给所有类似请求都做相同相同操作的功能了。 2.什么是中间件? 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子。它是一个轻量、低级别的插件系统,用于在全局范围内改变django的输入和输出。每个中间件组件都负责做一些特定的功能。 但是由于其影响的是全局,所以需要谨慎使用,使用不当会影响性能。 说的简单一点,中间件就是帮助我们在视图函数执行之前和执行之后都可以做一些额外的操作,它本质上就是一个自定义类,类中定义了几个方法,Django框架会在处理请求的特定时间去执行这些方法。 我们一直都在使用中间件,只是没有注意到而已,打开django项目的setting.py文件,可以看到MIDDLEWARE配置项。 MIDDLEWARE=[ 'django.middleware.security.S

  • Java基础-8构造方法

    一)、构造方法:    在之前我们提到对象的概念以及对象的实例化等,在这里简单回顾下:   Manman=newMan();   语句创建一个对象,new可以理解成创建一个对象的关键字,通过new关键字为对象分配内存,初始化实例变量,并调用构造方法。   Man()形式上和调用方法相同,而这个Man()就是一个特殊的方法叫做构造方法;   构造方法在代码中并没有看到这个方法的定义原因是在没有定义构造方法的时候,JAVA会隐式的创建一个无参的默认构造方法   构造方法有以下几个特征:1、具有和类相同的名称;2、不含有返回值;3、不能在方法中使用return返回一个值   在一个类中具有上述特征的方法就是构造方法。   在这里需要特别注意的是,在构造方法里不含返回值的概念不同于void,依然以Man类为例,publicMan(){}是构造方法,如果写成publicvoidMan(){};就不是构造方法了。   示例: /** *构造方法 **/ publicperson(Stringeat,Stringsleep,Stringspeak) { this.EAT=eat; this.SL

  • dubbo服务踩过的坑

    事情起因:当时接了个需求,开发过程中需要对工程A新增依赖工程B和工程C。   写代码,噼里啪啦噼里啪啦。。。 本地起了三个dubbo服务,其他服务依赖开发环境服务,非常开森改自己冒烟的bug。   提测!   测试环境,工程A死活起不来,起到一半卡住!没有任何异常!!!然后过了三分钟,抛出zk心跳连接超时,巴拉巴拉。。 2018-11-2214:38:03,857INFO [kafka-coordinator-heartbeat-thread|webull-trade-analyse--center]Markingthecoordinator10.xx.2.xxx:9092(id:2147483646rack:null)deadforgroupwebull-trade-analyse--center(org.apache.kafka.clients.consumer.internals.AbstractCoordinator)(AbstractCoordinator.java:631) 2018-11-2214:38:12,049WARN&nbs

  • 【线段树】[BZOJ3787][AHOI2014]奇怪的计算器

    题目描述 Description 【故事背景】 JYY有个奇怪的计算器,有一天这个计算器坏了,JYY希望你能帮助他写 一个程序来模拟这个计算器的运算。 【问题描述】 JYY的计算器可以执行N条预设好的指令。每次JYY向计算器输入一个正 整数X,计算器就会以X作为初始值,接着依次执行预设的N条指令,最后把 最终得出的结果返回给JYY。 每一条指令可以是以下四种指令之一:(这里a表示一个正整数。) 1、+a:表示将当前的结果加上a; 2、-a:表示将当前的结果减去a; 3、*a:表示将当前的结果乘以a; 4、@a:表示将当前的结果加上a*X(X是一开始JYY输入的数)。 计算器用于记录运算结果的变量的存储范围是有限的,所以每次运算结束之 后会有计算结果溢出的问题。 JYY的计算器中,存储每计算结果的变量只能存储L到R之间的正整数, 如果一次指令执行过后,计算结果超过了R,那么计算器就会自动把结果变成R,然后再以R作为当前结果继续进行之后的计算。同理,如果运算结果小于L,计算器也会把结果变成L,再接着计算。 比如,假设计算器可以存储1到6之间的值,如果当前的计算结果是2,那 么在执

  • google 快捷键

    标签页和窗口快捷键 Ctrl+N 打开新窗口。 Ctrl+T 打开新标签页。 Ctrl+Shift+N 在隐身模式下打开新窗口。 按 Ctrl+O,然后选择文件。 在谷歌浏览器中打开计算机中的文件。 按住 Ctrl 键的同时点击链接。或用鼠标中键(或鼠标滚轮)点击链接。 从后台在新标签页中打开链接。 按住 Ctrl+Shift 的同时点击链接。或按住Shift 键的同时用鼠标中键(或鼠标滚轮)点击链接。 在新标签页中打开链接并切换到刚打开的标签页。 按住 Shift 键的同时点击链接。 在新窗口中打开链接。 Ctrl+Shift+T 重新打开上次关闭的标签页。谷歌浏览器可记住最近关闭的10个标签页。 将链接拖到标签页中。 在标签页中打开链接。 将链接拖到标签栏的空白区域。 在新标签页中打开链接。 将标签页拖出标签栏。 在新窗口中打开标签页。 将标签页从标签栏拖到现有窗口中。 在现有窗口中打开标签页。 拖动标签页时按 Esc 键。

  • 博客园图片折叠

      博客园图片折叠 参考博文:https://www.cnblogs.com/jinshan-go/p/10300820.html   前言: 由于前端HTML等知识忘得差不多了,暂时没想着回顾属性标签的具体含义,目前仍有一个问题待解决:使代码默认为折叠状态 本文实现方案主要基于默认的Tinymce编辑器 正文 具体方案: 1)方案一: 使用Markdown编辑器 优点:简单 得到的代码如下: 1<details> 2<summary>点击查看代码</summary> 3 4``` 5 6``` 7</details>复制 删除代码引导符号三个点```,然后在空白处插入图片地址的标签,例如: 1<details> 2<summary>点击查看代码</summary> 3 4<imgsrc="https://img2022.cnblogs.com/blog/1998608/202203/1998608-20220315173543320-144553

  • 力扣125. 验证回文串-C语言实现-简单题

    题目 传送门 文本 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义为有效的回文串。 示例1: 输入:"Aman,aplan,acanal:Panama" 输出:true 示例2: 输入:"raceacar" 输出:false 来源:力扣(LeetCode) 模板 boolisPalindrome(char*s){ } 复制 解题 分析 题目中对于回文是只验证对于数字和字母的回文判断。所以需要对于符号以及其他不相干的元素进行革除。定义最后一个元素的下标,来进行对比 intn=strlen(str)-1; 复制 同时,对于元素遍历从前向后是首元素,就用普通的遍历即可,而遍历的长度不能像简单的判断回文一样n/2,因为对于内部的元素组成我们不知道他的有效部分在哪,所以要遍历到最后一个元素。同时进行对于元素的核查,不满足的就跳过该元素。 for(inti=0;i<=n;){ if(!isalnum(str[i])){ i++; continue; } if(!isalnum(str[n])){ n--; co

  • 算法:顺时针打印矩阵

    /** *题目:顺时针打印矩阵 *描述:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: *  1  2  3  4 *  5  6  7  8 *  9 10 11 12 *  1314 15 16 *  则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. *方案:  定义两个点:左上角和右下角,然后移动; *            注意代码合理性,只有一行或者只有一列 *  whi

  • 【JS】heatmap.js v1.0 到 v2.0,详细总结一下:)

    前段时间,项目要开发热力图插件,研究了heatmap.js,打算好好总结一下。 本文主要有以下几部分内容: 部分源码理解 如何迁移到v2.0 v2.0官方文档译文   关于heatmap.js介绍,请看这里: http://www.oschina.net/p/heatmap-js 目前,对于热力图的开发,百度、高德开发平台上使用的都是这款JS开源库。当然,现在还有我们公司:P 百度示例:http://developer.baidu.com/map/jsdemo.htm#c1_15 高德示例:http://lbs.amap.com/api/javascript-api/example/layers/heatmap/ PS:本人对JS只能算是初级水平,刚开始写热力图插件的时候,真是一头雾水。充分利用搜索引擎后,在百度的开源库发现了这个(示例源文件),总算有点眉目了。替换了地图实例对象,剩下的难点是图层处理和像素坐标转换,删删改改,也弄出了插件的1.0版。v2.0版本的内容与v1.0相比还是有很多不同的,经过大半天废寝忘食的努力,终于迁移到了2.0(准确的说是v2.0

  • python出现UnicodeEncodeError: &#39;gbk&#39; codec can&#39;t encode character &#39;\u2022&#39; in position 21: illegal multibyte sequence

    不管是爬冲导出数据还是读取excel文件的时候都可以用    参考:http://blog.csdn.net/jim7424994/article/details/22675759    https://blog.csdn.net/u012680593/article/details/53814340   在代码前加上这几句 importsys,io sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030') 复制  就ok了

  • 1.欧拉算法求100以内素数个数

    classtest{ privatestaticboolean[]check=newboolean[101];//这里定100会有越界错误 privatestaticint[]primeList=newint[101]; privatestaticvoideuler(intnum){ intcount=0; for(inti=2;i<=num;i++){ if(!check[i]){ primeList[count++]=i; } for(intj=0;j<count&&i*primeList[j]<=num;j++){ check[i*primeList[j]]=true; if(i%primeList[j]==0){ break; } } } System.out.println(count); } publicstaticvoidmain(String[]args){ intn=100; euler(n); } }复制 求素数的解法不止这一种,一般除了暴力解法还有埃筛法,欧拉算法在埃筛法的基础上进行了优化,其中i*primeList[j]==0

相关推荐

推荐阅读