JVM的内存模型,(GC)垃圾处理,调优监控(基于HotSpot VM,JDK1.5+)【JAVA内存模型】

Android双目摄像头(RGB+IR)实时预览与人脸活体检测实战指南 本文详细介绍了Android双目摄像头(RGB+IR)实时预览与人脸活体检测的实战指南。通过双摄同步预览、人脸检测与活体判断等技术实现,提升安全认证的准确性和鲁棒性。文章还提供了开发环境搭建、常见问题解决方案及性能优化建议,帮助开发者快速掌握双目摄像头在Android平台的应用。 阅读详情

一,JVM内存模型概括 

 

image

还有一个寄存器,线程运行于其上面

1.程序计数器
记录线程的执行位置,线程私有内存,唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域

2.线程栈(VM stack)

image

栈的默认大小是1M

-Xss2m 这样设置成2M

异常 :Fatal: Stack size too small

异常的引起一般是线程数目太多

3.本地方法栈(native stack)

即为一些Native方法分配的stack

异常:java.lang.OutOfMemoryError: unable to create new native thread

一般也是由线程太多引起,增加栈空间,同上方法

4.堆(heap),程序可用堆

image

截图自JConsole
每个线程的栈都是该线程私有的,堆则是所有线程共享的

这里说的堆,主要指程序能控制的,包括

image

The New Generational Heap,默认4M,此区域一般为JVM内存的1/15大小

此代分为Eden space区,Survivo space区可以看成emptySurvivo区,Survivor区,

当new 一个对象时,首先是在Eden space区,当Eden space区满时,Survivor space区进行垃圾回收(此处复制算法),当对象在Survivo space区经过几次回收Tenured Generation

复制算法,每次算法开始都得停止当前所有的线程,然后把Survivor区的所有活跃的对象复制到emptySurvivo区,然后对Survivor区空间进行清除变成emptySurvivo,以前的emptySurvivo成为了Survivor区。(互换)

Tenured Generation,

此处储存年老代的对象,此处的垃圾回收采用The Mark and Sweep 算法

GC标记算法/清理算法(The Mark and Sweep algorithms)进行回收,从引用进行标记,然后按照引用的程度或无引用到的对象进行回收,然后再对清除了的内存进行合并.

关于GC,因为GC主要就是对堆的回收,当然还有常量池和永久代,所以此处总结下GC

GC策略介绍

对于GC在 HotSpot VM 常用的有三种:

1.serial collector,单线程收集器,回收时都需要暂停当前线程,长时间等待,

配置

Client下默认方式

强制加上 -XX:+UseSerialGC

2.parallel collector( throughput collector ),并行收集器,或叫多线程的收集,

年轻代:暂停应用程序,多个垃圾收集线程并行的复制收集。
年老代:暂停应用程序, 多个垃圾收集线程并行的复制收集。

server下默认方式,具体配置

设置并行收集的线程数目,如20个线程,-XX:ParallelGCThreads=20

配置年轻代为并行收集  -XX:+UseParallelGC.

配置年老代垃圾收集方式为并行收集(JDK6.0开始支持)-XX:+UseParallelOldGC

设置暂停时间,设置每次年轻代垃圾回收的最长时间如果无法满足此时间,JVM会自动调整年轻代大小,以满足此值,如 -XX:MaxGCPauseMillis= 100, 

设置吞吐量,吞吐量为垃圾回收时间与非垃圾回收时间的比值  -XX:GCTimeRatio 来调整GC的时间

3.concurrent collector(concurrent low pause collector),并发收集器,

年轻代:同样是暂停应用程序,多个垃圾收集线程并行的复制收集。
年老代:和并行的区别在这,只是在初始标记(initial mark)和二次标记(remark)时需要stop-the-world。但收集时时间很长,所以不能等年轻代满后再开始清理.

使用启动并发收集器 -XX:+UseConcMarkSweepGC

XX:CMSInitiatingOccupancyFraction=指定还有多少剩余堆时开始执行并发收集

  • 根据官方文档,他们俩个需要在多CPU的情况下,才能发挥作用。在一个CPU的情况下,会不如默认的serial collector,因为线程管理需要耗费CPU资源。而在两个CPU的情况下,也提高不大。只是在更多CPU的情况下,才会有所提高。当然 concurrent low pause collector有一种模式可以在CPU较少的机器上,提供尽可能少的停顿的模式,见CMS GC Incremental mode。
  • 当要使用throughput collector时,在java opt里加上-XX:+UseParallelGC,启动throughput collector收集。也可加上-XX:ParallelGCThreads=<desired number>来改变线程数。还有两个参数 -XX:MaxGCPauseMillis=<nnn>和 -XX:GCTimeRatio=<nnn>,MaxGCPauseMillis=<nnn>用来控制最大暂停时间,而-XX: GCTimeRatio可以提高GC说占CPU的比,以最大话的减小heap。

GC的触发条件(基于serial collector,不同的GC策略略有不同,基本都差不多)

对于new generation来说,当eden区的对象空大于Survivor0(假设为from)的free空间时,会发生minor gc,即对整个Survivor0区,Survivor1区进行一个复制算法垃圾回收,并且部分对象转到Old Generation

当new generation满了(即eden区+Survivor0区大于Old Generation的free空间时),将发生major gc,即对New Generation和Old Generation两代都进行垃圾回收

当然还一种程序调用system.gc(),但此方法也不一定会调用,只是建议

所以得出,如果JVM的设置内存过大,发生GC的回收频率将越小,但是回收的时间越长(特别对new generation进行复制算法的复制时是需要停止当前所有线程的),所以并不是说JVM的内存设置的越大越好,得根据实际情况进行优化。

异常 java.lang.OutOfMemoryError: Java heap space

一般是由于垃圾回收后,old generation里空间也不够用了

堆内存的相关参数设置

默认值(基于-server)

-server时最大堆内存是物理内存的1/4,但小于1G. JDK 1.5以前是64M

(官方: Smaller of 1/4th of the physical memory or 1GB.Before J2SE 5.0, the default maximum heap size was 64MB.)

-client 小一倍

参数设置

-Xms128m
表示JVM Heap(堆内存)最小尺寸128MB,初始分配
-Xmx512m
表示JVM Heap(堆内存)最大允许的尺寸256MB,按需分配

new Generation与Old Generation的比例,默认为1:2,即为2

-XX:NewRatio= 参数可以设置(也可以-XX:NewSize和-XX:MaxNewsize设置新域的初始值和最大值)

Eden与Survivor的比例,默认为32

-XX:SurvivorRation=参数可以设置

当对象默认经过1次New Generation 就转入Old Generation(这个不同文章上不同,待我确定)

-XX:MaxTenuringThreshold=参数可以设置 (默认0)

用-XX:+PrintTenuringDistributio可以查看值

5.方法区,永久代(Perm Space)

其实也可与看成堆内存的一部分,看成永久代(Perm Space),但GC也会回收,但很少回收,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,比如一个int x,在不同的环境中是不同的,此信息就存在方法区

异常:java.lang.OutOfMemoryError: PermGen space

引起,一般是太多的类信息,比如应用spring很多反射信息,可以适度设置大点

方法区或永生代相关设置

-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允许分配尺寸,按需分配

XX:+CMSClassUnloadingEnabled -XX:+CMSPermGenSweepingEnabled 设置垃圾不回收

默认大小

-server选项下默认MaxPermSize为64m
-client选项下默认MaxPermSize为32m

6.常量池

Class文件中除了有类的版本、字段、方法、接口等描述等信息外,还有一项信息是常量表(constant_pool table),用于存放编译期已可知的常量,这部分内容将在类加载后进入方法区(永久代)存放。但

Java语言并不要求常量一定只有编译期预置入Class的常量表的内容才能进入方法区常量池,运行期间也可将新内容放入常量池(最典型的String.intern()方法)。

GC的作用主要是用来卸载类和回收常量池,当然有部分方法区,即使永久代(Perm Space)也会一定的回收

7.native内存区“Code Cache”(non-heap)

这个没画出来,但通过工具可以看到,用于存放编译和保存本地代码(native code)的内存

二,对TOMCAT监控调优

1,监控TOMCAT内存

JConsole,JDK自带

直接在命令行输入JConsole,打开JConsole,如堆那个图,就可以监控了

远程监控,需要在启动程序时,配置 com.sun.management.jmxremote 即可

比如tomcat,

打开%tomcat_home%/bin/catalina.bat (linux下是catalina.sh),在JAVA_OPTS=%JAVA_OPTS%后加上参数

-Dcom.sun.management.jmxremote.port=1090 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false

然后打开JConsole

image

然后连接即可

image

如打开堆图,可以找到上面说的各个部分

imageimage

Eden Space (heap): 内存最初从这个线程池分配给大部分对象。

Survivor Space(heap):用于保存从Eden Space copy的对象,复制算法,分两部分Survivor

Tenured Generation (heap):用于保持已经在 survivor space内存池中存在了一段时间的对象。

Perm Generation (non-heap): 方法区,保存虚拟机自己的静态(refective)数据,例如类(class)和方法(method)对象。Java虚拟机共享这些类数据。这个区域被分割为只读的和只写的

Code Cache(non-heap):HotSpot Java虚拟机包括一个用于编译和保存本地代码(native code)的内存,叫做“代码缓存区”(code cache)

2,打印Tomcat的日志

在前面继续加上参数 -Xloggc:%TOMCAT_HOME%\logs\tomcat_gc.log  , 把LOG日志文件输出到tomcat_gc.log 

打开日志如下

0.755: [GC 11747K->1664K(62848K), 0.0039655 secs]

0.759: [Full GC 1664K->1604K(62848K), 0.0241215 secs]

如果不满意,可以进行调优,参数如文中上面参数所示,直接设置于JAVA_OTPS即可

3,利用JSTA查看GC情况

JProfiler :商业软件,需要付费。功能强大。详细说明参考

VisualVM :JDK自带,功能强大,与JProfiler类似,官网地址下载http://visualvm.java.net/download.html(当然JDK7现在都自带了,在jdk1.7.0_10\bin里)

JConsole和VisualVM 在JDK都自带了 o(∩_∩)o 哈哈  感觉JProfiler这些收费的挺尴尬

OK,垃圾回收和调优原理打完收工,大概清楚 ,调优了就有方向了,具体参数可以查文档等

本文是基于HotSpot VM,其它JVM可能有些不一样,累死了,欢迎加小编V:k15197783918

 

AD22里面封装修改后,同步到PCB图里面 【摘要】本文介绍了Altium Designer 22中同步更新元件封装的三种方法:1)从PCB库直接更新:在PCB库面板右键选择"Update PCB With[封装名]";2)通过原理图标准更新:使用Design->Update PCB Document菜单;3)在PCB编辑器中验证更新:通过Tools->Update From PCB Libraries菜单。所有方法最终都需通过ECO(工程变更订单)确认变更,建议执行前仔细核对变更内容。这些方法适用于AD22及早期版本 阅读详情

相关推荐

MTGS与3D高斯泼溅:如何用多轨迹数据重建自动驾驶场景(附代码解析)

本文深入解析了MTGS(多轨迹高斯泼溅)技术在自动驾驶场景重建中的工程实践。该方法通过分层场景表示,巧妙融合多轨迹数据,利用3D高斯泼溅技术统一处理静态几何与动态物体,有效解决了复杂环境下的重建难题。文章结合代码,详细阐述了其实现框架、损失函数设计及优化策略,为构建高保真数字孪生场景提供了实用指南。

v5w6x的博客 446

深入理解JVM-内存结构

深入理解JVM-内存结构 [视频链接:

matafeiyanll的博客 955

从零构建AI智能体:阿里云百炼平台实战指南(一)

本文是阿里云百炼平台构建AI智能体的实战指南。文章详细阐述了从聊天机器人到具备自主规划与执行能力的AI智能体的概念演进,并手把手指导读者在百炼平台上快速创建专属智能体、编排复杂工作流,以及实现多智能体协同,为开发者提供一站式、低门槛的大模型应用开发解决方案。

ol7890123的博客 296

JAVA知识点总结

包括JAVA基础、JAVA容器、JAVA并发、JAVA虚拟机,图依旧是拿大佬的

IDEA_guo的博客 405

【大模型】一图看懂3D因果卷积!

本文将系统性地介绍从1D到3D的因果卷积原理,通过直观的动图演示帮助读者理解其工作机制,并重点探讨3D因果卷积在大规模视频生成中的独特价值和应用前景。

xian0710830114的专栏 2199

1、CUDA 编程基础

GPU计算的发展历程与重要性。首先回顾了计算机技术的发展,特别是摩尔定律的影响,强调了计算能力的快速提升。然而,随着晶体管尺寸的缩小和频率的停滞,单线程性能增长放缓。为了继续提升性能,多核处理器开始普及,促使软件开发者开始考虑并行计算。介绍了延迟导向设计和吞吐量导向设计的概念,CPU和GPU分别代表了这两种设计方法。GPU是吞吐量导向的,拥有众多弱小的ALU,通过流水线处理提高算术吞吐量。GPU的成功在于其高并行性和高吞吐量,以及能够分摊高昂的固定成本的大量销售额。

Justinyh的博客 580

生产环境中,监控线程大小和线程数以及-Xss 参数配置建议

在 JDK 1.8 生产环境中,监控线程大小和线程数以及合理配置。参数是优化 JVM 性能的关键步骤。,对于高并发服务(如 HTTP 服务器),默认 1MB 可能过度分配。线程数 × 栈大小 ≤ 可用内存的 20%~30% → 内存合理。可减少内存占用,但需测试栈深度是否足够。:100 个线程 × 1MB =检查栈大小是否生效。,通过压测验证稳定性。(平衡内存和栈深度)

weixin_37944816的博客 744

无监督学习与互信息

在机器学习中,获取大量高质量标注数据成本高昂。为解决此问题,无监督学习利用丰富的无标注数据成为研究重点。其中,互信息是衡量两个随机变量之间依赖关系的关键指标,能够捕捉非线性统计关联,非常适合处理非结构化数据。通过最大化神经网络中变量间的互信息,可以有效地从无标注数据中提取有用信息,提升模型在下游任务(如分类)的性能。互信息与熵密切相关,其值等于联合分布与边缘分布乘积间的KL散度,也可通过熵与条件熵的差值得出,具有对称性,并反映了已知一个变量后另一个变量不确定性的减少。

盼小辉丶的博客 3541

JVM-整体结构深度解析(2)

上图:同时局部变量的a和b的index是相同的,说明了a和b用的是同一个槽位,而一个槽位怎么可能放两个变量,所以肯定有个变量失效了,然后另一个变量才能够做到复用失效变量的槽位,这里就是局部变量a超出了作用域,失效了,然后局部变量b就复用了a的槽位,所以二者的index才会相同。:栈帧当中的局部变量表的槽位时可以重用的,如果一个局部变量过了其作用域,那么在其作用域之后申明的局部变量就很可能会复用过期局部变量的槽位。我们知道java栈是java虚拟机的一个重要的组成部分,在栈里进行线程操作,存放方法参数等等。.

wangran1515的博客 238

SAP Group Reporting入门指南(11)--配置

这里选择的是FS项目目标属性,FS项目有四个目标属性,比如上图配置的是抵消目标属性,所以就去找触发FS项目的抵消目标属性配置的是哪个FS项目,就以这个FS项目作为贷方。这里选择的是FS项目目标属性,FS项目有四个目标属性,比如上图配置的是抵消目标属性,所以就去找源FS项目的抵消目标属性配置的是哪个FS项目,就以这个FS项目作为借方。例如,添加一个包含用于存储百分比的 FS 项的选项。这里选择的是FS项目的角色属性值,如果这里定义了,那么就从FS项目中找到FS项目角色属性值与之匹配的FS项目作为贷方。

bflyfish的博客 568

【C2000系列DSP的Bootloader详解】如何打包源文件为库文件且加密仅授权使用,一步步教你如何实现

如果想要在 TI 的 CCS 开发环境中为 C2000 系列 MCU 生成 lib 库文件,并对这些库文件进行加密保护,确保只有授权方(持有密钥)才能调用和使用,以此保护源代码的知识产权。

昔时扬尘处 177

JVM之内存模型

1、 CPU和内存的交互 在计算机中,cpu和内存的交互最为频繁,相比内存,磁盘读写太慢,内存相当于高速的缓冲区。 但是随着cpu的发展,内存的读写速度也远远赶不上cpu。因此cpu厂商在每颗cpu上加上高速缓存,用于缓解这种情况。现在cpu和内存的交互大致如下。 在多核cpu中,每个处理器都有各自的高速缓存(L1,L2,L3),而主内存确只有一个 。虽然加入高速缓存解决了处理器和内存的矛盾(一快一慢),但是引来了新的问题 -缓存一致性 1.1、缓存一致性 如何保证多个处理器运算涉及到同一个.

浪迹白杨的博客 348

华为OD机试新系统真题【迷宫相遇】

华为OD机试 新系统真题【迷宫相遇】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【迷宫相遇】多语言题解。

qq_45776114的博客 767

gc java内存模型优化_二,JVM的内存模型,(GC)垃圾处理,调优监控(基于HotSpot VM,JDK1.5+)【JAVA内存模型】...

一,JVM内存模型概括还有一个寄存器,线程运行于其上面1.程序计数器记录线程的执行位置,线程私有内存,唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域2.线程栈(VM stack)栈的默认大小是1M-Xss2m 这样设置成2M异常 :Fatal: Stack size too small异常的引起一般是线程数目太多3.本地方法栈(native stack)即为一...

weixin_30740019的博客 571

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

was java虚拟机内存_二,JVM的内存模型,(GC)垃圾处理,调优监控(基于HotSpot VM,JDK1.5+)【JAVA内存模型】...

一,JVM内存模型概括还有一个寄存器,线程运行于其上面1.程序计数器记录线程的执行位置,线程私有内存,唯一一个在Java虚拟机规范中没有规定任何OutOfMemoryError情况的区域2.线程栈(VM stack)栈的默认大小是1M-Xss2m 这样设置成2M异常 :Fatal: Stack size too small异常的引起一般是线程数目太多3.本地方法栈(native stack)即为一...

weixin_39863371的博客 371

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Tomcat停止报错:Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0

bigdata_dog的博客 4337

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

jvm启动参数

1. 输出GC日志         -XX:+PrintGC (GC的简要信息)        -XX:+PrintGCDetails (GC的详细信息)        -XX:+PrintGCTimeStamps (GC的时间信息)        -XX:+PrintGCApplicationStoppedTime (GC造成的应用暂停的时间)        -Xloggc: gc.log (将...

yyy30000的博客 457

【XSS-2】盲打

小迪安全 xss

qq_41889600的博客 177

如何设置JVM参数避免栈溢出?

⚖️ 二、设置原则与优化建议。⚠️ 四、风险与注意事项。

DKPT的博客 744

Java基础_虚拟机4:(JVM调优)

有两种方法1:-Xmn 直接设置年轻代的大小,总共容量默认10m,设置新生代4m/*** jvm的堆内存设置* -Xms10m 初始堆容量大小* -Xmx10m 堆容量最大值* -Xmn4m 直接设置新生代大小(优先级高于比例设置)* -XX:NewRatio=4 新生代:老年代=1:4 默认值是2也就是1:2* 1:-Xms10m -Xmx10m -XX:NewRatio=4 -XX:+PrintGCDetails (NewRatio设置新生代、老年代比例)

huyiju的博客 878

JVM线程栈大小优化:3种场景下的-Xss最佳实践配置

掌握Java JVM的栈深度设置优化方法,针对高并发、大数据处理和微服务三种场景,详解-Xss参数调优策略。合理配置线程栈大小,提升系统稳定性与性能,避免StackOverflowError,节省内存开销,值得收藏。

FuncWander的博客 854

高并发系统JVM堆栈大小设置策略与调优

G1(Garbage-First)垃圾收集器是一种面向服务端应用的垃圾收集器,它在处理大堆和高并发的情况下表现出色。JVM堆栈大小设置需要综合考虑系统的并发量、线程数、可用内存等因素。合理设置JVM堆栈大小,可以保障系统的性能和稳定性。同时,及时监控和调优是非常重要的,以便发现潜在的问题并及时解决。针对日均百万交易系统,JVM堆栈大小的设置策略和调优是非常重要的,它直接影响到系统的性能和稳定性。调优方案需要根据具体的应用场景、硬件配置和系统特点来确定。G1(Garbage-First)垃圾收集器。

kankan_s的专栏 2030

JVM参数设置以及查看堆内存的大小

1.在eclipse设置JVM参数 2. 在Tomcat服务器上设置JVM参数(在startup.bat里面配置)       set CATALINA_OPTS=-Xmx512m -Xms512m -Xmn64m -Xss2m  或者       set JAVA_OPTS=-Xmx512m -Xms512m -Xmn64m -Xss2m       设置CATALINA_OPTS 和 ...

回忆的证据 8988

OutOfMemoryError内存溢出和StackOverFlowError栈溢出及解决方法

线程的堆栈存储 线程局部原始数据类型、变量、对象的引用、返回值。如果线程堆栈大小超出分配的内存限制,就会出现栈溢出错误。内存溢出指堆上存储的东西大于分配的内存大小。堆上存放数组、对象等数据。64位电脑默认栈大小为 1024k=1m。可以修改为-Xss2m。我这里整体配置的是 1024m,可以修改-Xmx=2048m。这里用递归调演示错误。这里用数组演示错误。

Misszhoudandan的博客 587

JVM常规参数

Xss-Xss1m,jdk5之后,1m。相同物理内存下,减小Xss可生成更多线程, 操作系统对一个进程内的线程数是有限制的,不能无限生成,经验值在3000~5000左右。: 功能等同于-Xss,默认=0,表示使用默认的一般只使用Xss即可。

qq_25775675的博客 6813

哪些场景会发生OOM异常

从今天开始会整理一些常见的面试题目,博客中会涉及一些JVM参数,可以关注一下公众号,回复JVM,即可领取最新版《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》今天要聊的就是比较经典的OOM问题。主要有5种场景,喜下面分别介绍。

qq_37759895的博客 1329
上一篇: JVM 字节码指令手册 - 查看 Java 字节码
下一篇: Java 详解 JVM 工作原理和流程
奇迹摘星w
博客等级 码龄6年 1844粉丝 189原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值